c# - 在C#中添加两个不同长度的列表

标签 c# linq

List<double> a = new List<double>{1,2,3};
List<double> b = new List<double>{1,2,3,4,5};

a + b 应该给我 {2,4,6,4,5}

显然我可以写一个循环,但是有更好的方法吗?使用 LINQ?

最佳答案

您可以很容易地使用修改后的“zip”操作,但没有内置任何东西。像这样:

    static void Main() {
        var a = new List<int> { 1, 2, 3 };
        var b = new List<int> { 1, 2, 3, 4, 5 };
        foreach (var c in a.Merge(b, (x, y) => x + y)) {
            Console.WriteLine(c);
        }
    }
    static IEnumerable<T> Merge<T>(this IEnumerable<T> first,
            IEnumerable<T> second, Func<T, T, T> operation) {
        using (var iter1 = first.GetEnumerator())
        using (var iter2 = second.GetEnumerator()) {
            while (iter1.MoveNext()) {
                if (iter2.MoveNext()) {
                    yield return operation(iter1.Current, iter2.Current);
                } else {
                    yield return iter1.Current;
                }
            }
            while (iter2.MoveNext()) {
                yield return iter2.Current;
            }
        }
    }

关于c# - 在C#中添加两个不同长度的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1190657/

相关文章:

c# - Linq Where 列表包含另一个列表中的项目

c# - 即使服务器端没有数据,NetworkStream.DataAvailable 也为真

c# - 如何使用XmlReader以int形式获取属性值?

c# - 无法建立连接,因为目标机器主动拒绝 127.0.0.1 :3446

c# - 按属性的反射顺序

c# - 使用 lambda 语法与匿名类型进行多个 linq 连接

C# 返回具有祖先和自身但没有其他子元素的 XML 元素

c# - 在 LINQ 查询中使用 ToString()?

c# - 如何根据 C# 中的 Datetime 键获取列表的子集?

.net - Entity Framework linq - 我应该学习哪个,基于查询的方法?