2013-07-26 28 views
16

是否可以在LINQ查詢語法中編寫IQueryable<MyObject> = query.Take(1)或其他等效語言。我正在使用C#5和EF 5.如何在查詢語法中編寫Take(1)

+0

只適用於VB.NET。 –

+1

不幸的是,C#並沒有像VB那樣有許多in-language Linq關鍵字,但是你可以通過在末尾添加'.Skip(n).Take(m)'來避免它太雜亂。 – Dai

+0

@TimSchmelter哦酷。出於好奇,VB.NET中的語法是什麼? –

回答

17

沒有相當於Take在C#中的LINQ查詢表達式語法。具有查詢表達式等效的唯一方法是

Where, 
Select, 
SelectMany, 
Join, 
GroupJoin, 
OrderBy, 
OrderByDescending, 
ThenBy, 
ThenByDescending, 
GroupBy, 
Cast 

這是來自說明書的第7.16.2節。

+3

我不知道有一個'Enumerable.GroupJoin'! –

8

不需要。您必須對該操作使用點語法。這同樣適用於ToListCount等..

var query = 
    (from item in list 
    where predicate(item) 
    select func(item)) 
    .Take(10);