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!

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top