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

.net 查询具有最大值的分组实体,.net,linq,entity-framework,.net,Linq,Entity Framework,我有一个实体BattleUser,它包含四个属性:Id、BattleId、UserId和DateTime。我需要为每个用户查询最后一个(按日期)用户实体。所以我得出了这样的结论: context.GroupBy(bu => bu.UserId, bu => bu). Select(gbu => new { UserId = gbu.Key, DateTime = gbu.Max(bu => bu.DateTime) }). ToList(); 通过此查询,我检索每个用户

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

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

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

您可以尝试以下查询:

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

您可以尝试以下查询:

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