我有一个填充了整数的List,如下所示:
[0] 1
[1] 4
[2] 4
[3] 8
[4] 9
[5] 1
[6] 1
Run Code Online (Sandbox Code Playgroud)
所以基本上是随机数,但是同一个数字可以在该列表中多次出现.
我想要的是按编号对它们进行分组,但我也可以告诉我这个数字在列表中的次数.所以我有一个类似的东西:
[0]
[number] 1
[total] 3 // Occured 3 times in the list
[1]
[number] 4
[total] 2
[2]
[number] 8
[total] 1
[3]
[number] 9
[total] 1
Run Code Online (Sandbox Code Playgroud)
有没有快速/简单的方法来实现这一目标?或者我是否已经写出各种循环和检查来手动构建这样的东西?
Tim*_*ter 24
使用GroupBy和Count:
var numberGroups = numbers.GroupBy(i => i);
foreach(var grp in numberGroups)
{
var number = grp.Key;
var total = grp.Count();
}
Run Code Online (Sandbox Code Playgroud)
这是另一个使用匿名类型存储一些信息的例子.它还会创建一个数组,因为它似乎是所需的结果:
var numberGroups = numbers.GroupBy(i => i)
.Select(grp => new{
number = grp.Key,
total = grp.Count(),
average = grp.Average(),
minimum = grp.Min(),
maximum = grp.Max()
})
.ToArray();
foreach (var numInfo in numberGroups)
{
var number = numInfo.number;
// ...
var maximum = numInfo.maximum;
}
Run Code Online (Sandbox Code Playgroud)
用这个
var result = numbers.GroupBy(n => n)
.Select(c => new { Key = c.Key, total = c.Count() });
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
33945 次 |
| 最近记录: |