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!

War es hilfreich?

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top