c# – 将列表转换为字典并使用linq汇总值
我有列表,即List< Field>.这个Field类包含一个代码和一个值属性以及其他字段,我希望能够使用
linq来总结相同代码的所有值.
我知道我可以遍历我的列表并使用以下代码将其添加到字典中,但我确信必须有一个更简洁的方法来执行此操作: if (totals.ContainsKey(code)) { totals[code] += value; } else { totals.Add(code,value); } 有任何想法吗? 我找到了类似的东西,但这适用于列表>这不是我所拥有的: var result = Sales.SelectMany(d => d) // Flatten the list of dictionaries .GroupBy(kvp => kvp.Key,kvp => kvp.Value) // Group the products .ToDictionary(g => g.Key,g => g.Sum()); 来自本文[使用Linq in< List< Dictionary< string,int>>]的总和金额Sum amount using Linq in <List<Dictionary<string,int>> 有任何想法吗?我总是可以将我的代码更改为包含字典< string,Field>但我确信必须有一种方法可以用列表和linq来做到这一点. 谢谢. 我有列表,我希望能够使用linq来总结相同代码的所有值. 我知道我可以遍历我的列表并使用以下代码将其添加到字典中,Field>但我确信必须有一种方法可以用列表和linq来做到这一点. 谢谢. 更新: 对不起,我想我省略了有关上述内容的重要部分.该列表包含在另一个列表中,即List> myitemList;其中包含其他可能需要进一步过滤的无关字段.我不确定??? 注意:抱歉格式化再次搞砸了! 为此提供一些上下文: Item1(List类型) 商品名称价值 (第1项)第1类 Item2(List类型) 商品名称价值 (第1项)第2类 Item3(List类型) 商品名称价值 (第1项)第2类 正如您所看到的,List列表中的每个列表包含4个字段条目,其中我的字段定义为Name(String)和Value(Object) 然后将这些列表中的每一个添加到主列表中.所以我需要遍历主列表,然后我想最终得到一个字典,其中包含每个列表的“代码”和“网络”的总和.所以最后,我应该结束 A,135.95 我不知道上面是否有意义.我希望它能做到! UPDATE 事实上,我正在处理一个列表>实际上并没有因为我当时想要总结一个列表而有所不同,所以提供答案是正确的!谢谢! 解决方法
您发布的代码几乎就是您所需要的 – 要在列表中使用它,您需要稍微简化它:
var result = myList // No flattening .GroupBy(x => x.Code) // Group the items by the Code .ToDictionary(g => g.Key,g => g.Sum(v => v.Value)); // Total up the values (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |