复制通用列表
本文关键字:列表 复制 | 更新日期: 2023-09-27 18:02:59
我有2个通用列表,如:
public class List1
{
public string Tag { get; set; }
public byte[] Resim1 { get; set; }
public byte[] Resim2 { get; set; }
}
public class List2
{
public string Tag { get; set; }
public byte[] Resim { get; set; }
}
我需要将list1
项逐一复制到list2
。
例如list1
项为:
Tag = 1
Resim1 = cıvata
Resim2 = somun
Tag = 2
Resim1 = vida,
Resim2 = tornavida
我需要复制这些项目到list2
,如
Tag = 1
Resim =cıvata
Tag = 1
Resim = Somun
Tag = 2
Resim = vida
Tag = 2
Resim = tornavida
你知道怎么做吗?
看起来您想将Resim1, Resim2字节[]拆分为List2类型的单个实例,但保留相关的Tag?如果是这样,这将工作:
设置 var lst1 = new List<List1>
{
new List1
{
Tag = "1",
Resim1 = Encoding.ASCII.GetBytes("cıvata"),
Resim2 = Encoding.ASCII.GetBytes("somun")
},
new List1
{
Tag = "2",
Resim1 = Encoding.ASCII.GetBytes("vida"),
Resim2 = Encoding.ASCII.GetBytes("tornavida")
},
};
:
var list2Collection = new List<List2>();
foreach (var item in lst1)
{
list2Collection.Add(new List2{ Tag = item.Tag, Resim = item.Resim1});
list2Collection.Add(new List2 { Tag = item.Tag, Resim = item.Resim2 });
}
您想要做什么还不清楚,但是如果您想从现有的List1对象集合填充一个List2对象集合,这里有一种方法(使用Linq):
// List<List1> list1Coll = new List<List1>();
// list1Coll.Add( .... )
List<List2> list2Coll = list1Coll.Select(o => new List2() { Tag = o.Tag, Resim = o.Resim1 }).ToList();
很难看出你在做什么。假设您正在创建两个列表,一个列表将list1作为项目,另一个列表将list2作为项目,如下所示:
List<List1> list1 = new List<List1>();
List<List2> list2 = new List<List2>();
这是令人困惑的,因为你的list类不是一个列表,它是一个项目。然而,有许多方法可以将第一个列表的项添加到第二个列表中,最简单的方法就是迭代地添加它们,例如:
foreach (List1 item in list1)
{
if (item.Resim1 != null)
list2.Add(new List2() { Tag = item.Tag, Resim = item.Resim1 });
if (item.Resim2 != null)
list2.Add(new List2() { Tag = item.Tag, Resim = item.Resim2 });
}
请记住,您的Tag不会是您的索引,您必须将您提供的示例值从string转换为byte[]。
先纠正你的泛型列表概念
执行以下操作
public class YourClassName1
{
public string Tag { get; set; }
public byte[] Resim1 { get; set; }
public byte[] Resim2 { get; set; }
}
public class YourClassName2
{
public string Tag { get; set; }
public byte[] Resim { get; set; }
}
现在你可以得到新的通用列表
var list1 = new List<YourClassName1>();
var list2 = new List<YourClassName2>();
现在将输入后的数据混合为
foreach(var item in list1)
{
list2.Add(new YourClassName2{Tag = item.Tag, Resim = item.Resim1});
list2.Add(new YourClassName2{Tag = item.Tag, Resim = item.Resim2});
}