将 C# 集合复制到另一个集合 [关闭]

Posted

技术标签:

【中文标题】将 C# 集合复制到另一个集合 [关闭]【英文标题】:Copying a C# Collection to another collection [closed] 【发布时间】:2016-02-28 10:08:38 【问题描述】:

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

头等舱:

public class Class1

  int locationIDget;set;
  string locationNameget;set;

二等:

public class Class2

  int locationIDget;set;
  string locationNameget;set;
  string identifierget;set;

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

【问题讨论】:

您想将List<Class1> 复制到List<Class2>?它们有关系吗? Class1Class2 的父级吗?请给我们更多背景信息。 那么,对于 list2 中的每个项目,您希望标识符的值是多少? (顺便说一句,我强烈建议您开始遵循 .NET 命名约定,并在标点符号周围添加空格...) 我没有看到任何收藏?标识符中应该放什么?请注意,共享相同属性的对象可能可以通过使用继承来解决。 有些矛盾。什么是“列表参数”?如果你有两个类,类型怎么可能相同?展示你如何填写列表和你想要的结果。 在我看来Class2应该是Class1的子类。噗。你所有的问题都消失了。 【参考方案1】:

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

var NewList
  = OldList.Select(
      x => new Class2 locationID = x.locationID, locationName = x.locationName 
                  ).ToList();

【讨论】:

【参考方案2】:
var l1 = new List<Class1>();
var l2 = new List<Class2>();

l2.AddRange(l1.Select(i=>new Class2() locationID = i.locationID,
                                       locationName = i.locationName);

【讨论】:

这很好用。谢谢@Bradley【参考方案3】:

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);

【讨论】:

以上是关于将 C# 集合复制到另一个集合 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Firestore -Flutter 中将所有文档从一个集合复制到另一个集合?

如何在不解压缩的情况下将文件从 zipArchive 复制到另一个 zipArchive - 在 c# 中 [关闭]

在Java中将字符串集合复制到另一个字符串的时间复杂度

我如何将对象属性复制到另一个对象?

将一个结构的成员复制到另一个 C#

C# 将一个文件夹中的文件复制到另一个文件夹中