Question

J'utilise Entity Framework pour connecter la base de données.

J'ai une table (call Let It "Fichier") que plusieurs champs nantis:

ID, version, XYZ clé Primarky est basée sur ID et la version. donc je peux avoir plusieurs lignes avec le même ID mais une version différente (et inversly).

La question est:

Comment puis-je, avec une expression de LAMBDA, demander à mon Entity Framework, pour me retourner toute dernière version d'un "fichier".

Exemple: Datas:

 ID;Version;Other
 1;1;YX
 1;2;YZ
 2;1;AH
 2;2;BH
 2;5;CA
 1;3;AAA

Résultat:

 1;3;AAA
 2;5;CA

Merci!

!! L'objectif est que la base de données n'a pas besoin de renvoyer toutes les lignes, et est appelé qu'une seule fois, alors oubliez solution comme GetAllRows et lire toute la collection et enregistrer seulement la dernière, ou d'obtenir une liste de tous les ID possible et obtenir le dernier Version foreach dans une autre demande. Merci!

Était-ce utile?

La solution

Vous pouvez utiliser la requête suivante pour LinqToEntites ceci:

var result = from f in myEntities.Files
             group f by f.ID into g
             select g.OrderByDescending(f => f.Version).FirstOrDefault();

Il serait peut-être plus judicieux d'utiliser First au lieu de FirstOrDefault mais vous obtenez une UnsupportedException:

  

La méthode « d'abord » ne peut être utilisé comme une opération de requête finale. Pensez à utiliser la méthode « FirstOrDefault » dans ce cas au lieu

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top