2009-10-07 18 views
13

好像我可能錯過了簡單的語法,但我想直接從linq語句中獲得FirstOrDefault的結果,而不必先將IEnumerable存儲在臨時變量中。事情是這樣的:直接在LINQ語句中的FirstOrDefault行爲

var bestCar = from c in cars 
       orderby c.Price 
       select first c 

我知道第一關鍵字實際上並不存在,但說明我想做什麼。 我也知道我可以用括號括起select ... select語句,並直接調用FirstOrDefault,但我認爲上面的語法更清晰,更易於閱讀。

+0

你的問題到底是什麼? – 2009-10-07 21:19:51

回答

23

Enumerable.FirstOrDefault是在枚舉類的擴展方法,其不具有相應的LINQ語法元素之一。綁定到此方法的唯一方法是通過方法調用語法。

您可以通過執行follownig

​​
+0

雖然這是'FirstOrDefault()'的一個例子,似乎最好假定這樣一個可枚舉已經是有序的,因爲排序比MaxBy(c => c.Price)簡單得多。 – 2016-07-07 10:39:47

3

    var bestCar = (from c in cars 
       orderby c.Price 
       select c).FirstOrDefault(); 

對不起,我沒有完全讀你的問題,看來這可能正是你不想做的。

4
var bestCar = (from c in cars 
      orderby c.Price 
      select c).FirstOrDefault() 

OR

var bestCar = cars.OrderBy(c => c.Price).FirstOrDefault() 
7

沒有辦法做到這一點避免暫時的。 LINQ用於定義查詢。這樣做實際上並不會導致評估,而執行FirstOrDefault(或枚舉)會執行查詢。