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

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....