Gib alle Zeilen einen Maximalwert
-
01-10-2019 - |
Frage
Ich bin mit Entity Framework, die Datenbank zu verbinden.
Ich habe eine Tabelle (nennen wir es „Datei“), die mehrere Felder haves:
ID, Version, XYZ Primarky Schlüssel basiert auf ID und Version. so dass ich mit der gleichen ID, aber anderer Version (und invers) mehrere Linie haben kann.
Die Frage ist:
Wie kann ich mit einem LAMBDA Ausdruck, meinen Entity Framework bitten, zurückzukehren mir alle letzte Version einer „Datei“.
Beispiel: Daten:
ID;Version;Other
1;1;YX
1;2;YZ
2;1;AH
2;2;BH
2;5;CA
1;3;AAA
Ergebnis:
1;3;AAA
2;5;CA
Danke!
!! Das Ziel ist, dass die Datenbank nicht alle Zeilen zurückgegeben werden muss, und wird nur einmal, so vergessen Lösung wie GetAllRows und lesen Sie die ganze Kollektion und speichern nur die neueste, oder erhalten eine Liste aller möglichen ID und die letzte genannt Version foreach in einer anderen Anfrage. Dank!
Lösung
Sie können die folgende LinqToEntites Abfrage für diese:
var result = from f in myEntities.Files
group f by f.ID into g
select g.OrderByDescending(f => f.Version).FirstOrDefault();
Es wäre vielleicht sinnvoller zu nutzen First
statt FirstOrDefault
machen, aber dann bekommt man eine UnsupportedException
:
Die Methode ‚First‘ kann nur als letzte Abfrageoperation verwendet werden. Betrachten Sie mit der Methode ‚FirstOrDefault‘ in diesem Fall statt