2013-03-22 107 views
-1

我的表有以下栏目: -Linq查询与group by子句

LevelId,LevelName,ScenarioId,TeamId。

我要选择当teamId分组对应最小LevelId LevelName

+2

StackOverflow不是代码写入服务。请阅读[提问一个好问题的指南](http://tinyurl.com/so-hints)并显示[你尝试过的](http://whatyouhavetried.com)。 – 2013-03-22 10:42:55

+0

我试过以下查询: - – user2044161 2013-03-22 10:43:47

+0

@ user2044161:请更新您尝试的原始问题。 – 2013-03-22 10:45:57

回答

0

所以,你想:

  • 集团通过团队ID
  • 在每个组,以便通过级别ID
  • 以第一个结果的级别名称

这样听起来像:

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

不要只听此查询,并将其包含在你的代码虽然 - 确保你了解,所以你能拿出你有类似的东西做自己的解决方案下一次。

如果这是LINQ到对象,你可能会发现MoreLINQ将是有益的,其MinBy方法:

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

这避免了订购全团,只为找到的最低水平ID项。

+0

我曾尝试: - UnitOfWork.Levels.Entities.Where( S => s.Scenario_Id == 10.GroupBy (T => t.Team_Id)。选择( 克=> g.Min(T = > t.Level_Id))。Distinct()。ToList(); 在上面的查询中,我想查找levelName对应的选定levelIds – user2044161 2013-03-22 10:51:53

+0

@ user2044161:它非常难以阅读注释中编写的代码,发布甚至没有意义('10.GroupBy'?)我已经回答了你问的问题 - 在理解它之后尝试了我的解决方案吗? – 2013-03-22 10:54:20