Disons que j'ai un modèle défini comme: Y a-t-il un moyen de faire une expression booléenne lambda afin que je puisse obtenir le foo à la dernière date? quelque chose sur les lignes de foo {id, date} code>. p>
(f => f.date islamest) code>? p>
5 Réponses :
Essayez ceci:
DateTime maxDate = FooCollection.Max(f=>f.Date)
"Obtenez le foo avec la dernière date", pas "Obtenez la dernière date"
var latest = model.OrderByDescending(m => m.Date).FirstOrDefault();
Le résultat ne serait pas un DateTime code>.
Voir aussi maxby () dans Jon Skeet's Morelinq bibliothèque
étant donné que vous n'avez fourni aucune information sur le nom de vos entités (je suppose que et s'il y a plus d'un em> avec la date maximale (je sais que vous avez dit "le foo avec le dernier ..." Mais je Je ne connais pas la résolution de vos moments ici) que vous serez réellement après quelque chose de plus comme la réponse de Guffa. p> Sachez que l'une ou l'autre solution profitera massivement d'un index sur la colonne Date. S'il n'y a pas d'index et que la table devient grande? Ensuite, cela pourrait être très lent. P> p> foos code> ici); quelque chose comme ceci:
Je pensais dans les lignes de quelque chose comme des foos.Où (f => f.date islamest). J'essayais réellement ma main dans le schéma de spécification et j'en ai besoin pour être une expression booléenne.
Oui, mais ce n'est même pas c # afin que cela ne compile pas, je suis sûr que vous le savez aussi. Je ne suis pas convaincu qu'il y ait un réel bénéfice i> d'avoir eu l'emballage d'EF de cette manière, non plus. Sûrement une méthode de raccourci de votre objetContext Class 'GetLatestFoo' qui fait quelque chose comme ce qui précède serait la chose la plus simple?
Pour faire une expression qui détermine si la date est la dernière, vous devez connaître la date la dernière date, c'est-à-dire:
var latestItem = items.Aggregate((d, v) => v.Date > d.Date ? v : d);
Je pense que vous pourriez dire que vous pourriez dire foo.where (f => f.date == Datedate); code> :)
Vous pouvez essayer le code suivant:
List<Foo> fooList = new List<Foo>(); // add the Foo instance in list here // then apply following to take latest fooList.OrderByDescending(p => p.Date).Take(1);