Restituire tutto fila avente un valore massimo
-
01-10-2019 - |
Domanda
sto utilizzando Entity Framework per la connessione al database.
Ho una tabella (chiamata di Let it "File") che haves diversi campi:
ID, versione, XYZ chiave Primarky è basata su ID e la versione. così posso avere molti linea con lo stesso ID, ma versione diversa (e inversly).
La domanda è:
Come posso, con un'espressione lambda, chiedere a mio Entity Framework, per tornare me tutto ultima versione di un "file".
Esempio: Dati:
ID;Version;Other
1;1;YX
1;2;YZ
2;1;AH
2;2;BH
2;5;CA
1;3;AAA
Risultato:
1;3;AAA
2;5;CA
Grazie!
!! L'obiettivo è che il database non ha bisogno di restituire tutte le righe, ed è chiamato solo una volta, in modo da dimenticare soluzione come GetAllRows e leggere l'intera collezione e salvare solo l'ultima, o ottenere un elenco di tutti i possibili ID e l'ultima versione foreach in un'altra richiesta. Grazie!
Soluzione
È possibile utilizzare la seguente query LinqToEntites per questo:
var result = from f in myEntities.Files
group f by f.ID into g
select g.OrderByDescending(f => f.Version).FirstOrDefault();
Sarebbe forse più sensato uso First
invece di FirstOrDefault
ma poi si ottiene un UnsupportedException
:
Il metodo 'First' può essere usato solo come operazione query finale. Si consiglia di utilizzare il metodo 'FirstOrDefault' in questo caso al posto