私は、Entity Frameworkのエンティティ持っているShoe
別のエンティティと一対多の関係を持っていますPerson
。それぞれPerson
に多くShoe
のがあります。一人一人が持っている最新の靴のリストを入手したいです。
public class Shoe {
public Long PersonId { get; set; }
public DateTime PurchaseDate { get; set; }
}
私はこれを試しました:
var latestShoesPerPerson = _dbContext.Shoe
.GroupBy(shoe => shoe.PersonId)
.Select(shoes => shoes.OrderByDescending(shoe => shoe.PurchaseDate).First());
しかし、私はこのエラーが発生しました orderbydescending could not be translated
GroupByの結果は、暗黙のKey + Collectionです。実際には、微妙に異なることを行うための多くの「フレーバー」があります。そのような結果を得るためにあなたが探しているのはGroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>)
これを使用すると、式は次のようになります。
var latestShoesPerPerson = _dbContext.Shoe
.GroupBy(shoe => shoe.PersonId, (personId, shoes) => shoes.OrderByDescending(s => s.PurchaseDate).FirstOrDefault())
.ToList(); // list of the earliest shoe for each person.
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加