将一些列表中的少数项目复制到c#中相同类型的另一个列表

时间:2018-05-17 19:40:56

标签: c# list

我正在尝试将项目从一个列表复制到另一个相同类型的列表。

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

任何帮助?

提前致谢。

3 个答案:

答案 0 :(得分:2)

与OP聊天后,我知道OP希望将仅包含部分定义字段的2个列表合并到一个完整列表中。我将调用入门列表list1list2而不是oldListnewList

  • 列表1的ID 已定义,名称未定义,未定义年龄
  • 列表2的ID未定义,名称已定义,年龄已定义

所以:

List<MyClass> newList =
    list1.Zip(list2, (first, second) =>
        new MyClass{id = first.id,name = second.name,age=second.age}).ToList();

但我真的建议你使用不同的课程。例如,list1可以是List<Integer>list2List<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();