我目前有一个 IEnumerable<MyObject>
,其中 MyObject
具有属性 String Name
和 long Value
。
如果在 Enumerable 中有 10 个实例的 MyObject
,每个实例具有不同的名称和值,但其中一个与另一个具有相同的名称。
在 .NET (或 LINQ) 中是否有内置方法可以查找重复项,并在可能的情况下合并 Value
属性,以便在可枚举对象中只有 9 个元素,每个元素都具有唯一的 Name
,其中一个具有重复项的 Value
等于它自身和重复项的总和。
到目前为止,我发现唯一的方法是遍历整个 IEnumerable
,查找重复项并生成新的唯一项目的 IEnumerable
,但这似乎很杂乱而且慢。
StringComparer
类型 :) - myermianvar dict = new ConcurrentDictionary<string, int>(); Parallel.ForEach(objects, obj => dict.AddOrUpdate(obj.Name, obj.Value, (key, oldvalue) => oldvalue + obj.Value));
- Jonas Elfström