繁体   English   中英

在C#中合并两个列表元素明智

[英]Merge two lists element wise in C#

我有两个相同类别和相同长度的列表。 我希望基于自定义函数逐个元素地合并它们。

我想合并出现在列表中相同位置的那些元素对。

我有以下两个列表:

            public class classA
            {
                public classA() { }

                public int id { get; set; }
                public string email { get; set; }
                public string name { get; set; }
            }
            var users1 =
                new List<classA> {
                    new classA{ 
                                id= 1,
                                email = "Test1@Test.com"
                    },
                    new classA{
                                id= 2,
                                email = "Test2@Test.com"
                    }
                };

            var users2 =
                new List<classA> {
                    new classA{ 
                                id= 456,
                                email = "Test1@Test.com",
                                name = "Test One"
                    },
                    new classA{ 
                                id= 123,
                                email = "Test2@Test.com",
                                name = "Test Two"
                    }
                };

我希望合并它们以获得以下列表:

{ 
 {
  id=1,
  email="Test1@Test.com",
  name="Test One"
 },
 { 
  id=2,
  email="Test2@Test.com",
  name="Test Two"
 }
}

就像其他人在评论中建议的那样,我认为您正在寻找的 LINQ 方法是Zip

var users3 = users1.Zip(users2,
    (first,second) => new classA{id = first.id, email = first.email, name = second.name});

以上将创建一个新列表,该列表从第一个列表中获取idemail以及从第二个列表中获取name 列表的顺序与合并的方式有关,我只是选择以这种方式处理合并,以获得您说想要的示例输出。 我将留给您来弄清楚您的实际合并规则应该是什么。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM