2016-07-12 96 views
2

我試圖根據出現次數找到「最受歡迎」的遊戲。 所以我寫了LINQ查詢,如下LINQ找到最高頻率

var query = (from evt in events 
         from game in evt.EventGames 
         group game by game.GameTypeId 
         into g 
         select new {g.Key, Count = g.Count()}).OrderByDescending(x => x.Count).FirstOrDefault(); 

var gameType = repository.GetRepository<GameType>().Find(query?.Key); 

我意識到,我查詢兩次獲得具有最高頻率的遊戲類型。

是否有可能從第一個查詢本身獲取遊戲類型?

-Alan-

+3

是的,只是由'GameType'而不是'GameTypeId'分組。 – juharr

回答

1

是的,只是由GameType而不是GameTypeId組。

var gameType = (from evt in events 
       from game in evt.EventGames 
       group game by game.GameType into g 
       orderby g.Count() descending 
       select g.Key) 
       .FirstOrDefault(); 
+0

正是我想要的。謝謝。和var gameType = query,我會猜測沒有密鑰。 –

+0

@AlanB是的,我做了一些編輯,並沒有解決這個問題。但現在我有。 – juharr

0

想要查找所有出現人數最多的GameTypes

var gameTypeGroups = from evt in events 
         from game in evt.EventGames 
         group game by game.GameTypeId 
         into g 
         orderby g.Count() descending 
         select repository.GetRepository<GameType>().Find(g.Key); 
IEnumerable<GameType> maxCountGroup = gameTypeGroups.FirstOrDefault();