2013-03-22 90 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