我正在努力寻找最受欢迎的"基于发生次数的游戏。 所以我写了一个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 -
答案 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();