Linq仅包含最大行

时间:2015-11-11 15:15:19

标签: c# linq

我从包含另一张桌子的桌子中提取物品。 包含时,包含的表中可能有多行属于该项,但我只想包含包含列的最大值的行。

items.AddRange(db.AuctionItems
    .Include(f => f.AuctionBids.Max().Bid)
    .OrderBy(x => x.Item));

也试过

items.AddRange(db.AuctionItems
    .Include(f => f.AuctionBids.Max(y => y.Bid))
    .OrderBy(x => x.Item));

错误

The Include path expression must refer to a navigation property defined on the type. Use dotted paths for reference navigation properties and the Select operator for collection navigation properties.

添加了信息

表AuctionItems

ID
Name
.....

表AuctionBids

ID
ItemID
Bid
....

所以我想提取所有项目,只包含该项目出价最高的行。

1 个答案:

答案 0 :(得分:3)

您可以执行以下操作:

db.AuctionItems
  .Select(s => new{ai = s, bid = s.AuctionBids.OrderByDescending(o => o.Bid).FirstOrDefault()})
  .AsEnumerable()
  .Select(s => s.ai)

使用此方法,您只需将AuctionBid加载到上下文中,EF将为您执行适当的AuctionItem映射。