Linq查询with group by子句

时间:2013-03-22 10:41:49

标签: linq

我的表格包含以下列: -

LevelId,LevelName,ScenarioId,TeamId。

我想在按teamId

分组时选择与最小LevelId对应的LevelName

1 个答案:

答案 0 :(得分:0)

所以,你想:

  • 按团队ID分组
  • 在每个组中,按级别ID排序
  • 获取第一个结果的级别名称

听起来像这样:

var query = table.GroupBy(x => x.TeamId)
                 .Select(g => g.OrderBy(x => x.LevelId).First().Name);

不要只是接受这个查询并将其包含在您的代码中 - 确保理解它,以便下次有类似的事情时可以提出自己的解决方案。

如果这是在LINQ to Objects中,您可能会发现MoreLINQMinBy方法很有用:

var query = table.GroupBy(x => x.TeamId)
                 .Select(g => g.MinBy(x => x.LevelId).Name);

这可以避免对整个组进行排序,只是为了找到具有最低级别ID的条目。