Ich habe eine LINQ-Abfrage:
var list = from t in ctn.Items
where t.DeliverySelection == true && t.Delivery.SentForDelivery == null
orderby t.Delivery.SubmissionDate
select t;
Wie kann ich diese Abfrage ändern, um nur fünf Ergebnisse aus der Datenbank auszuwählen?
Antworten:
quelle
take
nur die ersten 5 Zeilen aus der Datenbank zu entfernen?Die Lösung:
quelle
Dies kann auch mit dem Lambda-basierten Ansatz von Linq erreicht werden.
quelle
[Bietet eine etwas aussagekräftigere Antwort als die Antwort von @Ajni .]
Dies kann auch mithilfe der fließenden LINQ- Syntax erreicht werden :
Man beachte , dass jede Methode (
Where
,OrderBy
,Take
) , das erscheint in dieser Anweisung einen LINQ nimmt Lambda - Ausdruck als Argument. Beachten Sie auch, dass die Dokumentation fürEnumerable.Take
beginnt mit:quelle
Additional information
Manchmal ist es erforderlich, ein Modell in ein Ansichtsmodell zu binden und einen Typkonvertierungsfehler anzugeben . In dieser Situation sollten Sie die
ToList()
Methode verwenden.quelle
Ich denke nur, dass Sie sich mit der Sequenz From-> Where-> Select nicht vertraut fühlen, wie im SQL-Skript, es ist wie Select-> From-> Where.
Möglicherweise wissen Sie jedoch nicht, dass es in Sql Engine auch in der Reihenfolge ' Von-> Wo-> Auswählen ' analysiert wird. Um dies zu überprüfen , können Sie ein einfaches Skript ausprobieren
und es wird nicht funktionieren, der Grund ist, dass die Engine Where before Select analysiert , sodass sie den Alias i in where nicht kennt . Damit dies funktioniert, können Sie es versuchen
quelle