LINQ组和最大值计数
有人可以为以下内容编写LINQ查询吗 鉴于以下数据,我需要以下信息 每周得分最高的球员,如果他们赢了超过一周,则统计他们的得分。如果一周内比分平局,那么每个球员都会得到一分。示例数据包括这种情况LINQ组和最大值计数,linq,count,max,linq-group,Linq,Count,Max,Linq Group,有人可以为以下内容编写LINQ查询吗 鉴于以下数据,我需要以下信息 每周得分最高的球员,如果他们赢了超过一周,则统计他们的得分。如果一周内比分平局,那么每个球员都会得到一分。示例数据包括这种情况 Week Player Points 1 Steve 35 1 Mark 29 1 John 26 2 John 23 2 Mar
Week Player Points
1 Steve 35
1 Mark 29
1 John 26
2 John 23
2 Mark 21
2 Steve 21
3 Mark 42
3 John 42
3 Steve 19
4 Pete 28
4 John 16
4 Steve 14
4 Mark 12
结果将是
Player Count
Steve 1
John 2
Mark 1
Pete 1
我可能会将其分为两个步骤——这实际上并不意味着任何事情都会提前执行,但更容易理解
// For each week, yield a sequence of winning results
var winningResultsByWeek = from result in results
group result by result.Week into week
let winningScore = week.Max(x => x.Points)
select week.Where(x => x.Points == winningScore)
var winsPerPlayer = from winningResults in winningResultsByWeek
from winningResult in winningResults
group winningResult by winningResult.Player into winsByPlayer
select new { Player = winsByPlayer.Key,
Count = winsByPlayer.Count() };
这里的命名非常重要——希望通过拼写我已经相当清楚了。当然,我相信还有其他方法可以做到这一点,但这是我想到的最清晰的方法。太好了,这就成功了。这似乎是一个简单的问题,但细节相当棘手。谢谢你的回答。