复制通用列表

Copying the Generic List

我有 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

知道怎么做吗?

不清楚你想做什么,但如果你想从现有的 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();

您似乎想将 Resim1、Resim2 byte[] 拆分为 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 作为项目,例如:

        List<List1> list1 = new List<List1>();
        List<List2> list2 = new List<List2>();

这令人困惑,因为您的列表 class 不是列表,而是一个项目。尽管如此,有很多方法可以将第一个列表的项目添加到第二个列表中,最简单的就是迭代添加它们,例如:

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

请记住,您的标签不会成为您的索引,您必须将您提供的示例值从字符串转换为 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});
}