查询具有最大值的分组实体

时间:2011-08-04 18:30:43

标签: .net linq entity-framework

我有一个实体BattleUser,它包含四个属性:Id,BattleId,UserId和DateTime。我需要为每个用户查询最后一个(按日期)BattleUser实体。所以我来到这样的事情:

context.GroupBy(bu => bu.UserId, bu => bu).
Select(gbu => new { UserId = gbu.Key, DateTime = gbu.Max(bu => bu.DateTime) }).
ToList();

通过此查询,我检索每个用户的最后一个DateTime。通过使用这些值,我可以通过另一个查询为每个用户检索最后的BattleUser实体。有没有办法修改初始查询以通过一个查询来解决任务?

1 个答案:

答案 0 :(得分:1)

您可以尝试此查询:

context.GroupBy(bu => bu.UserId, bu => bu)
    .Select(gbu => new
    {
       UserId = gbu.Key,
       LastBattleUser = gbu.OrderByDescending(bu => bu.DateTime).FirstOrDefault()
    })
    .ToList();