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