asp.net – LINQ:列表中唯一项目的计数

前端之家收集整理的这篇文章主要介绍了asp.net – LINQ:列表中唯一项目的计数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个正确存储在列表<>中的ID列表.我现在需要对此列表进行分组,并获得按降序排序的发生次数的计数.

例:

List<string> aryIDs = new List<string>;
aryIDs.Add("1234");
aryIDs.Add("4321");
aryIDs.Add("3214");
aryIDs.Add("1234");
aryIDs.Add("4321");
aryIDs.Add("1234");

会产生:

"1234",3
"4321",2
"3214",1

这在Tsql中很容易,但如果可能,我想避免服务器往返,不必要的表等.

提前致谢.

更新:对于Ralph Shillington的回答如下:

Dim result = From id In aryIDs _
                     Group id By id Into Group _
                     Order By Group.Count() Descending _
                     Select id,Count = Group.Count()

result.Dump()

解决方法

List<string> aryIDs = new List<string>();
aryIDs.Add("1234");
aryIDs.Add("4321");
aryIDs.Add("3214");
aryIDs.Add("1234");
aryIDs.Add("4321");
aryIDs.Add("1234"); 

var result =     from id in aryIDs
group id by id into g
orderby g.Count() descending
select new { Id=g.Key,Count=g.Count() };

result.Dump();

剪切并粘贴到LinqPad,你应该很好去.

也可以使用Lambda表达式来写:

aryIDs.GroupBy (id => id).OrderByDescending (id => id.Count()).Select(g => new { Id=g.Key,Count=g.Count()}).Dump();

猜你在找的asp.Net相关文章