2016-08-19 83 views
1

我有一個 'GetTransactions' 方法,返回類型的對象:如何用流利的語法編寫這個LINQ查詢?

IList<ApplicationTransaction> 

如果這是一個ApplicationTransaction:

public partial class ApplicationTransaction 
{ 
    public int TransactionId { get; set; } 
    public int ApplicationId { get; set; } 
    public string Event { get; set; } 
    public System.DateTime CreatedOn { get; set; } 

    public virtual Application Application { get; set; } 
} 

如何轉換這個LINQ查詢:

return (from t in GetTransactions().OfType<ApplicationTransaction>() 
     where t.Event == transactionType.ToString() 
     select t).FirstOrDefault(); 

流利的語法?

這不起作用 - 我不理解什麼?

return GetTransactions().OfType<ApplicationTransaction>().Where(t.Event == transactionType.ToString().FirstOrDefault(); 
+1

您可以使用LINQPad(或Reflector)來查看其流暢的味道。 –

回答

3

您需要參數拉姆達在哪裏聲明:

return GetTransactions() 
    .OfType<ApplicationTransaction>() 
    .Where(t => t.Event == transactionType.ToString()) 
    .FirstOrDefault(); 

(注意:t =>部分,其中定義了一個新的表達範圍,而不是直接試圖訪問一個變量「t」)

如果您選擇整個實體,則不需要單獨選擇。

我還建議使用我在答案中使用的多行佈局,以更好地理解查詢並捕獲潛在的問題,如缺少的圓括號問題@nvoigt提到。

+2

他也錯過了正確設置的關閉''''。也許很好提。 – nvoigt

+1

Doh!謝謝塞達特 –

+0

@nvoigt好抓!我添加了一個關於它的註釋。 –

相關問題