2013-07-26 10 views
16

Ist es möglich, IQueryable<MyObject> = query.Take(1) oder etwas Ähnliches in LINQ-Abfragesyntax zu schreiben. Ich verwende C# 5 und EF 5.Wie kann ich Take (1) in die Abfragesyntax schreiben

+0

Nur mit VB.NET. –

+1

Leider nein, C# hat nicht so viele in-Sprache Linq Schlüsselwörter wie VB, aber Sie können es tun, ohne dass es zu chaotisch aussieht, indem Sie '.Skip (n) .Take (m)' am Ende hinzufügen. – Dai

+0

@TimSchmelter oh cool. Aus Neugier, wie ist die Syntax in VB.NET? –

Antwort

17

Es zu Take kein Äquivalent für LINQ in C# in der Abfrage-Ausdruck-Syntax ist. Die einzigen Methoden, die Entsprechungen für Abfrageausdrücke haben, sind

Dies ist aus §7.16.2 der Spezifikation.

+3

Ich wusste nicht, dass es eine "Enumerable.GroupJoin'! –

8

Nein. Sie müssen die Punktsyntax für diese Operation verwenden. Das Gleiche gilt für ToList, Count, etc ...

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