我有一个实体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实体。有没有办法修改初始查询以通过一个查询来解决任务?
答案 0 :(得分:1)
您可以尝试此查询:
context.GroupBy(bu => bu.UserId, bu => bu)
.Select(gbu => new
{
UserId = gbu.Key,
LastBattleUser = gbu.OrderByDescending(bu => bu.DateTime).FirstOrDefault()
})
.ToList();