C# LINQ:如何通过personid计算人数
我需要找到列表中项目最多的人,如下所示:C# LINQ:如何通过personid计算人数,c#,linq,C#,Linq,我需要找到列表中项目最多的人,如下所示: class Person { var personid; var personname; var blah; } List<Person> people = new List<Person>(); 样本结果 1 3 (id, count) 奖金结果示例-带Top N条款 1 3 2 1 加;Top N子句如果有/内置的话会很好。我想学习两个版本;有没有Top子句。我不明白问题的第一部分。什么名单 对
class Person
{
var personid;
var personname;
var blah;
}
List<Person> people = new List<Person>();
样本结果
1 3 (id, count)
奖金结果示例-带Top N条款
1 3
2 1
加;Top N子句如果有/内置的话会很好。我想学习两个版本;有没有Top子句。我不明白问题的第一部分。什么名单 对于第二部分:SQL中等同于TOP的linq是Take。将其与“跳过”组合以获得下一个X行结果。Max: 顶部: 编辑: 第一个查询返回一个igroupping类型的元素,其中TKey属于同一类型的personid,TValue属于Person类型。第二个查询返回这样的IEnumerable对象 例如,在第二种情况下,您可以:
foreach(var g in top3peopleGroups)
{
Console.WriteLine("Person Id: " + g.Key + ", Count: " + g.Count());
}
什么物品的最高限额?布拉是一个收藏吗?措辞拙劣的问题抱歉-1。@Marcelo Cantos:谢谢你的格式化,看起来很棒。我写得很匆忙,对不起。@NimeCloud:Np。顺便说一句,您可以使用Ctrl-K缩进选定的代码;FixedIt将是一种顶级列表。现在我知道了最重要的数字,但我如何才能确定这个人是谁?@Nime:在Key属性中,检查我的编辑;
var biggestGrpOfPeopleHavingSamePersonId =
people.GroupBy(x => x.personid).Max(x => x.Count());
var top3peopleGroups =
people.GroupBy(x => x.personid).OrderByDescending(x => x.Count()).Take(3);
foreach(var g in top3peopleGroups)
{
Console.WriteLine("Person Id: " + g.Key + ", Count: " + g.Count());
}