C# 确定玩最多游戏的玩家
我有一个包含玩家编号的类C# 确定玩最多游戏的玩家,c#,linq,C#,Linq,我有一个包含玩家编号的类 public class Game { public int blackPlayer { get; set; } public int whitePlayer { get; set; } } 还有 List<Game> games; 列表游戏; 我想知道哪个球员号码在名单中出现最多(不管他们是黑人还是白人)。有人知道一个好的LINQ表达式吗?以下内容应该可以实现您的目标: var q = (from g in games
public class Game {
public int blackPlayer { get; set; }
public int whitePlayer { get; set; }
}
还有
List<Game> games;
列表游戏;
我想知道哪个球员号码在名单中出现最多(不管他们是黑人还是白人)。有人知道一个好的LINQ表达式吗?以下内容应该可以实现您的目标:
var q = (from g in games
from p in new[] {g.blackPlayer, g.whitePlayer}
group p by p into pgroup
orderby pgroup.Count() descending
select new { Player = pgroup.Key, Count = pgroup.Count() }).FirstOrDefault();
Console.WriteLine("Player # {0} played {1} times which is the most", q.Player, q.Count);
以下几点应该可以实现您的目标:
var q = (from g in games
from p in new[] {g.blackPlayer, g.whitePlayer}
group p by p into pgroup
orderby pgroup.Count() descending
select new { Player = pgroup.Key, Count = pgroup.Count() }).FirstOrDefault();
Console.WriteLine("Player # {0} played {1} times which is the most", q.Player, q.Count);
如果你想要所有的领带
List<int> mostFrequentPlayers = games.Select(g => g.blackPlayer)
.Concat(games.Select(g => g.whitePlayer))
.GroupBy(p => p) //into g
.GroupBy(g => g.Count()) //into g2
.OrderByDescending(g2 => g2.Key)
.First()
.SelectMany(g2 => g2, g => g.Key) //unpack g2 as g.Key
.ToList();
列出最频繁的玩家=游戏。选择(g=>g.blackPlayer)
.Concat(games.Select(g=>g.whitePlayer))
.GroupBy(p=>p)//变成g
.GroupBy(g=>g.Count())//进入g2
.OrderByDescending(g2=>g2.Key)
.First()
.SelectMany(g2=>g2,g=>g.Key)//将g2解包为g.Key
.ToList();
如果你想要所有的领带
List<int> mostFrequentPlayers = games.Select(g => g.blackPlayer)
.Concat(games.Select(g => g.whitePlayer))
.GroupBy(p => p) //into g
.GroupBy(g => g.Count()) //into g2
.OrderByDescending(g2 => g2.Key)
.First()
.SelectMany(g2 => g2, g => g.Key) //unpack g2 as g.Key
.ToList();
列出最频繁的玩家=游戏。选择(g=>g.blackPlayer)
.Concat(games.Select(g=>g.whitePlayer))
.GroupBy(p=>p)//变成g
.GroupBy(g=>g.Count())//进入g2
.OrderByDescending(g2=>g2.Key)
.First()
.SelectMany(g2=>g2,g=>g.Key)//将g2解包为g.Key
.ToList();
除了您最初的问题,我发现您的命名方案非常混乱。我花了很长时间才弄明白黑色实际上意味着玩家号码谁是黑色的。我把“黑”和“白”改成了“黑玩家”和“白玩家”。白玩家和黑玩家是一样的吗?弗朗西斯科,黑玩家!=除了你最初的问题,我发现你的命名方案非常混乱。我花了很长时间才弄明白黑色实际上意味着玩家号码谁是黑色的。我把“黑”和“白”改成了“黑玩家”和“白玩家”。白玩家和黑玩家是一样的吗?弗朗西斯科,黑玩家!=游戏列表中每个元素的whiteplayer。