2010-05-20 10 views
18

ich Linq zu Entitäten bin mit und würde gerne wissen, ob ich eine begrenzte Anzahl von Datensätzen erhalten können, wenn i abfragen. Ich brauche nur die oberen N Datensätze, da die Abfrage die orderby- und andere Klauseln ausführt. Ist das möglich oder muss ich die oberste N mit foreach loop holen?Erhalten Sie Top-Datensätze N mit LINQ to Entities

+0

http überspringen: // Stackoverflow. com/fragen/2874599/get-top-n-records-using-linq-to-entities –

Antwort

28

Sie können nur den .Take Methodenaufruf verwenden, um ein paar Ergebnis zu erhalten. Sie können here mehr zu diesem Thema lesen.

Sie müssen verstehen, dass die Abfrage nicht ausgeführt werden, wenn jemand die GetEnumerator() ausführt.

28

Es gibt mehrere Möglichkeiten

1)

var data = (from p in db.people 
      orderby p.IdentityKey descending 
      select p).Take(100); 

2)

var query = db.Models.Take(100); 

3) oder Sie können bestimmte Ergebnisse

var data = (from p in people 
      select p).Skip(100); 
+0

Was ist, wenn IdentityKey Guid ist? Irgendeine Lösungsmöglichkeit? –

+0

Dann wird entweder überhaupt nicht sortiert oder nach einem anderen Spaltenwert sortiert –