当前位置:  开发笔记 > 编程语言 > 正文

在两个IEnumerable集合中添加项的值

如何解决《在两个IEnumerable集合中添加项的值》经验,为你挑选了1个好方法。



1> Vadim Martyn..:

包含重复键的案例的最通用解决方案可以使用GroupBy和Sum LINQ方法实现:

var result = firstCollection
    .Concat(secondCollection)
    .GroupBy(x => x.Name)
    .Select(g => new Foo { Name = g.Key, Value = g.Sum(f => f.Value) });
    // Foo is an example of your element class. You can use anonymous classes
    //.Select(g => new { Name = g.Key, Value = g.Sum(f => f.Value) });

该解决方案的算法复杂度为O(n).

如果您希望获得最大性能,可以使用序数字符串比较:

var result = firstCollection
    .Concat(secondCollection)
    .GroupBy(x => x.Name, x => x, StringComparer.Ordinal)
    .Select(g => new Foo { Name = g.Key, Value = g.Sum(f => f.Value) });

推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有