正在将C#集合复制到另一个集合

本文关键字:集合 复制 另一个 | 更新日期: 2023-09-27 18:24:14

我有以下列表/集合,需要将其复制到另一个列表中。但列表中的参数数量并不相同。但是对象的名称和类型是相同的。这是类

头等舱:

public class Class1
{
  int locationID{get;set;}
  string locationName{get;set;}
}

二等:

public class Class2
{
  int locationID{get;set;}
  string locationName{get;set;}
  string identifier{get;set;}
}

在我的方法中,我需要获取List1的值,并将其复制到List2(Class2)。清单2有一个额外的参数标识符。这是如何在C#中实现的??

正在将C#集合复制到另一个集合

如果类型Class1Class2在形式上不相关,则必须手动实现转换,可以使用Linq如下所示。

var NewList
  = OldList.Select(
      x => new Class2{ locationID = x.locationID, locationName = x.locationName }
                  ).ToList();
var l1 = new List<Class1>();
var l2 = new List<Class2>();
l2.AddRange(l1.Select(i=>new Class2() {locationID = i.locationID,
                                       locationName = i.locationName});

Class1和Class2是两个不同的对象和签名,不能只是从一个复制到另一个。您需要做的是迭代一个列表,装入一个新对象,复制属性值,并将其添加到另一个列表中。

var firstList = GetFirstList() //returns List<Class1>();
var secondList = new List<Class2>();
foreach(var first in firstList)
{
    var second = new Class2();
    second.locationID = first.locationID;
    second.locationName = first.locationName;
    //you could even set the identifier property here
    second.identifier = someValue;
    secondList.Add(second);
}