根据条件从分组的linq查询中选择单个项目

时间:2014-04-30 16:12:59

标签: c# .net linq grouping

我正在努力进行分组linq查询

我有这个:

DateTime dateFrom = new Date(2014,8,2);
var GroupedPrices = Prices.Where(p => p.ArrivalDateFrom <= dateFrom
                    &&
                    p.ArrivalDateTo > dateFrom)
                    .GroupBy(p => p.ItemID);

我试图获得每个ID的单一价格 - 例如。来自/来自每个组,基于该价格的最新ValidFrom日期。 我已经开始通过他们的ItemID(而不是个人价格记录ID)对它们进行分组,但我正在努力研究如何根据最新的ValidFrom日期获取一个。我认为我可以在分组之前订购它们,但不确定在分组完成后它会坚持下去...即

期望它会使用Max(x=>x.ValidFrom)类型的内容或OrderByDescending(x=>x.ValidFrom).First(),但无法解决此问题

任何非常感谢的帮助

感谢

1 个答案:

答案 0 :(得分:1)

你最后需要选择你想要的东西,如下:

DateTime dateFrom = new Date(2014,8,2);
var GroupedPrices = Prices
    .Where(p => p.ArrivalDateFrom <= dateFrom && p.ArrivalDateTo > dateFrom)
    .GroupBy(p => p.ItemID)
    .Select(g => new{ ItemId = g.Key, NewestPrice = g.OrderByDescending(p => p.ValidFrom).First() });