复制通用列表

本文关键字:列表 复制 | 更新日期: 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});
}