我试图使用linq从列表列表中获取值的总和?我的数据如下所示
List<List<string>> allData = new List<List<string>>();
using (StreamReader reader = new StreamReader(path))
{
while (!reader.EndOfStream)
{
List<string> dataList;
dataList = reader.ReadLine().Split('|').ToList();
allData.Add(dataList);
}
}
Run Code Online (Sandbox Code Playgroud)
它给我的数据allData如下
allData-->[0]-->[0]-'name1'
[1]-'sub'
[2]-'12'
[1]-->[0]-'name2'
[1]-'sub'
[2]-'15'
[2]-->[0]-'name1'
[1]-'sub2'
[2]-'15'
//and so on ....
Run Code Online (Sandbox Code Playgroud)
我已经应用了group by by给我按名称分组,但是我无法弄清楚如何得到每个名字的标记总和?
var grouped = allData.GroupBy(x => x[0]);
Run Code Online (Sandbox Code Playgroud)
在此之后,我将所有匹配的名称分组为一个,但现在如何获得该组的标记总和?任何帮助都会很棒?
Output should be name1=27 and name2=15 and so on.
Run Code Online (Sandbox Code Playgroud)
Jar*_*Par 21
不确定是否要获得每个组或总数的总和.如果它是总数那么这应该可以解决问题
var sum = allData.Sum(x => Int32.Parse(x[2]));
Run Code Online (Sandbox Code Playgroud)
如果是每个键,请尝试以下操作
var all = allData
.GroupBy(x => x[0])
.Select(x => x.Sum(y => Int32.Parse(y[2]));
Run Code Online (Sandbox Code Playgroud)
var grouped = allData.GroupBy(x => x[0])
.Select(g => new
{
Name = g.Key,
Sum = g.Sum(x => int.Parse(x[2]))
});
Run Code Online (Sandbox Code Playgroud)
它将为每个组返回一个匿名类型实例,具有两个属性:Name使用分组键和Sum标记总和.
| 归档时间: |
|
| 查看次数: |
58839 次 |
| 最近记录: |