c# - Linq - 每个组的最高值

标签 c# linq lambda

我如何使用 Linq 从每个组中选择最高值

当我有这样的代码段时:

var teams = new Team[]
 { 
  new Team{PlayerName="Ricky",TeamName="Australia", PlayerScore=234},
  new Team{PlayerName="Hussy",TeamName="Australia", PlayerScore=134},
  new Team{PlayerName="Clark",TeamName="Australia", PlayerScore=334},

  new Team{PlayerName="Sankakara",TeamName="SriLanka", PlayerScore=34},
  new Team{PlayerName="Udana",TeamName="SriLanka", PlayerScore=56},
  new Team{PlayerName="Jayasurya",TeamName="SriLanka", PlayerScore=433},

 new Team{PlayerName="Flintop",TeamName="England", PlayerScore=111},
 new Team{PlayerName="Hamirson",TeamName="England", PlayerScore=13},
 new Team{PlayerName="Colingwood",TeamName="England", PlayerScore=421}
 };

期望的结果:


Team Name         Player Name     Score

Srilanka          Jayasurya        433

England           colingwood       421

Australia         Clark            334 

最佳答案

我的回答与 Yuriy 的类似,但使用了 MaxBy来自 MoreLINQ ,不需要通过整数进行比较:

var query = from player in players
            group player by player.TeamName into team
            select team.MaxBy(p => p.PlayerScore);

foreach (Player player in query)
{
    Console.WriteLine("{0}: {1} ({2})",
        player.TeamName,
        player.PlayerName,
        player.PlayerScore);
}

请注意,我已将类型名称从“Team”更改为“Player”,因为我认为这更有意义 - 你不是从一组团队开始,而是从一组球员开始。

关于c# - Linq - 每个组的最高值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1575316/

相关文章:

c# - Linq 中 OfType 的逆函数?

c# - Windows 上的 Kestrel 和 macOS/Linux 上的 Kestrel 之间的日期反序列化差异

c# - 在 Windows Phone 中返回时将数据传回上一页的最佳方法

c# - 我如何使用 linq 和 c# 将字典字符串字符串转换为字符串和字符串的键值对数组

c# - 如何使用 LINQ 获取 id 的列表作为 int

linq - 如何编写 Linq(或 lambda)语句来生成所有不在(或不存在)的元素

Lambda表达式java 8映射方法

java - 为什么在 Java 中使用 lambda 表达式?

c# - ListView + DataPager 控件不维护状态

c# - 将文件上传存储到 MemoryStream (C#) 的最佳做法是什么?