0

看看下表:

student       Subject
badhon        English
jack          math
andy          physics
farhan        english
joe           english
foe           physics

现在我需要知道哪个科目的参赛人数最多以及人数是多少?我知道这对有经验的人来说很简单,但我对 LinQ 真的很陌生。所以如果你能给我任何参考学习各种LinQ Example,那就太好了。谢谢。

4

1 回答 1

2

好吧,看起来您想按行分组,然后按计数(降序)对它们进行排序并获取第一个结果:

var subjectsByCount = rows.GroupBy(row => row.Subject)
                          .Select(g => new { Subject = g.Key, Count = g.Count() })
                          .OrderByDescending(x => x.Count);
var biggestSubject = subjectsByCount.First();

// Now you can use biggestSubject.Subject and biggestSubject.Count

严格来说,排序是不必要的——使用MoreLINQMaxBy之类的东西,您可以在不对整个事物进行排序的情况下找到最大值。但如果您只想停留在 vanilla LINQ 中,这是最简单的方法。

于 2013-03-05T04:10:43.620 回答