加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-15 23:41:52 所属栏目:asp.Net 来源:网络整理
导读:我有一个正确存储在列表中的ID列表.我现在需要对此列表进行分组,并获得按降序排序的发生次数的计数. 例: Liststring aryIDs = new Liststring;aryIDs.Add("1234");aryIDs.Add("4321");aryIDs.Add("3214");aryIDs.Add("1234");aryIDs.Add("4321");aryIDs.Add
我有一个正确存储在列表<>中的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();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读