2013-07-26 11 views
16

È possibile scrivere IQueryable<MyObject> = query.Take(1) o qualcosa di equivalente nella sintassi della query LINQ. Sto usando C# 5 e EF 5.Come scrivere Take (1) nella sintassi della query

+0

Solo con VB.NET. –

+1

Sfortunatamente no, C# non ha tante parole chiave in linq in lingua come VB, ma puoi farlo senza sembrare troppo disordinato aggiungendo ".Skip (n) .Take (m)" alla fine. – Dai

+0

@TimSchmelter oh cool. Per curiosità, qual è la sintassi in VB.NET? –

risposta

17

Non v'è alcun equivalente Take nella sintassi delle espressioni di query per LINQ in C#. Gli unici metodi con equivalenti di espressione di query sono

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

Questo è da §7.16.2 delle specifiche.

+3

Non sapevo che esistesse un "Enumerable.GroupJoin'! –

8

No. È necessario utilizzare la sintassi del punto per tale operazione. Lo stesso vale per ToList, Count, ecc ...

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