2016-07-12 5 views
2

私は出現回数に基づいて「最も人気のある」ゲームを見つけようとしています。 私は最も高い周波数を持っているゲームの種類を取得するために二回照会していますことに気づい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); 

以下のようにだから私は、LINQクエリを書きました。

最初のクエリ自体からゲームタイプを取得することはできますか?

-Alan-

+3

はい、 'GameTypeId'の代わりに' GameType'でグループ化するだけです。 – 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(); 
関連する問題