-1

我的表有以下列:-

LevelId、LevelName、ScenarioId、TeamId。

我想在按teamId分组时选择与最小LevelId对应的LevelName

4

1 回答 1

0

所以,你想要:

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

这听起来像:

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

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

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

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

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

于 2013-03-22T10:43:49.500 回答