Bra*_*d M 15 linq asp.net sorting ienumerable count
我有一个正确存储在List <>中的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");
Run Code Online (Sandbox Code Playgroud)
会产生:
"1234", 3
"4321", 2
"3214", 1
Run Code Online (Sandbox Code Playgroud)
这在TSQL中很容易,但我想避免服务器往返,不必要的表等,如果可能的话.
提前致谢.
更新:Ralph Shillington的VB.NET转换如下:
Dim result = From id In aryIDs _
Group id By id Into Group _
Order By Group.Count() Descending _
Select id, Count = Group.Count()
result.Dump()
Run Code Online (Sandbox Code Playgroud)
Ral*_*ton 20
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();
Run Code Online (Sandbox Code Playgroud)
将其剪切并粘贴到LinqPad中,你应该很高兴.
它也可以使用Lambda表达式编写为:
aryIDs.GroupBy (id => id).OrderByDescending (id => id.Count()).Select(g => new { Id=g.Key, Count=g.Count()}).Dump();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11397 次 |
| 最近记录: |