我正在尝试将项目从一个列表复制到另一个相同类型的列表。
List<MyClass> oldList=
newList.ConvertAll(x => new MyClass{
id = x.id,
name = x.name
});
但我想只复制一些清单。
对于ex,我想只复制id,将所有剩余项目中的名称从newList复制到oldList。
但是使用上面的代码,所有项目都被复制到oldList,而oldList中的所有项目都被newList中的项目替换。
如何在此处仅复制少数项目?
例如:
myOldList:
id:1
name:abcd
age:15
newList:
id:3
name:xyz
age:25
输出:
id:3
name:xyz
age:15
任何帮助?
提前致谢。
答案 0 :(得分:2)
与OP聊天后,我知道OP希望将仅包含部分定义字段的2个列表合并到一个完整列表中。我将调用入门列表list1
和list2
而不是oldList
和newList
所以:
List<MyClass> newList =
list1.Zip(list2, (first, second) =>
new MyClass{id = first.id,name = second.name,age=second.age}).ToList();
但我真的建议你使用不同的课程。例如,list1
可以是List<Integer>
,list2
和List<MySmallerClass>
只包含2个字段。
(另请注意,在原帖中你真的将newList与oldList相反。)
答案 1 :(得分:0)
如果你这样做
oldList.Where(x => x.id == 1).Select(x => new MyClass{ /* items from x here*/}).ToList();
答案 2 :(得分:0)
我认为这就是你想要的?
oldList = newList.Select((t, i) => new MyClass
{
id = t.id,
name = t.name,
age = oldList[i].age
}).ToList();