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

有人可以为以下内容编写LINQ查询吗

鉴于以下数据,我需要以下信息 每周得分最高的球员,如果他们赢了超过一周,则统计他们的得分。如果一周内比分平局,那么每个球员都会得到一分。示例数据包括这种情况

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() };

这里的命名非常重要——希望通过拼写我已经相当清楚了。当然,我相信还有其他方法可以做到这一点,但这是我想到的最清晰的方法。

太好了,这就成功了。这似乎是一个简单的问题,但细节相当棘手。谢谢你的回答。