我有一个List对象,其中包含Id值,例如它包含:1,2,10,1,23,11,1,4,2,2,...等我需要找出多少次"1","在C#中使用Linq发生了2",...等
善意的帮助.
Jon*_*eet 13
这非常简单Enumerable.GroupBy:
var grouped = list.GroupBy(x => x);
foreach (var group in grouped)
{
Console.WriteLine("{0} appears {1} times", group.Key, group.Count());
}
Run Code Online (Sandbox Code Playgroud)
或者:
var query = list.GroupBy(x => x, (x, g) => new { Key = x, Count = g.Count() }));
foreach (var result in query)
{
Console.WriteLine("{0} appears {1} times", result.Key, result.Count);
}
Run Code Online (Sandbox Code Playgroud)
(区别在于我们真正将组转换为结果的时候.)
Kir*_*huk 12
使用GroupBy:
var les = new[] { 1, 2, 10, 1, 23, 11, 1, 4, 2, 2 };
var result = les
.GroupBy(i => i, (e, g) => new { Value = e, Count = g.Count() });
Run Code Online (Sandbox Code Playgroud)
或者使用替代语法:
var result =
from i in les
group i by i
into g
select new { Value = g.Key, Count = g.Count() };
Run Code Online (Sandbox Code Playgroud)