我有两个类别相同且长度相同的列表。我希望基于自定义功能将它们逐个元素合并。
我想合并那些在列表中相同位置出现的元素对。
我有以下两个列表:
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"
}
}
答案 0 :(得分:2)
就像其他人在评论中建议的一样,我认为您正在寻找的LINQ方法是Zip
var users3 = users1.Zip(users2,
(first,second) => new classA{id = first.id, email = first.email, name = second.name});
上面的代码将创建一个新列表,该列表从第一个列表中获取id
和email
,从第二个列表中获取name
。列表的顺序对于事物的合并方式很重要,我只是选择以这种方式处理合并,以获得所需的示例输出。我将留给您了解实际的合并规则。