LINQ找到最高频率

时间:2016-07-12 12:15:55

标签: c# 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 -

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分: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();