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

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

例:

  1. List<string> aryIDs = new List<string>;
  2. aryIDs.Add("1234");
  3. aryIDs.Add("4321");
  4. aryIDs.Add("3214");
  5. aryIDs.Add("1234");
  6. aryIDs.Add("4321");
  7. aryIDs.Add("1234");

会产生:

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

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

提前致谢.

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

  1. Dim result = From id In aryIDs _
  2. Group id By id Into Group _
  3. Order By Group.Count() Descending _
  4. Select id,Count = Group.Count()
  5.  
  6. result.Dump()

解决方法

  1. List<string> aryIDs = new List<string>();
  2. aryIDs.Add("1234");
  3. aryIDs.Add("4321");
  4. aryIDs.Add("3214");
  5. aryIDs.Add("1234");
  6. aryIDs.Add("4321");
  7. aryIDs.Add("1234");
  8.  
  9. var result = from id in aryIDs
  10. group id by id into g
  11. orderby g.Count() descending
  12. select new { Id=g.Key,Count=g.Count() };
  13.  
  14. result.Dump();

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

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

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

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