2015-07-15 2 views
0

У меня есть 2 общие списки, как:Копирование списка Generic

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 

Любая идея, как это сделать?

+0

Чтобы получить пояснения, являются ли объекты list1 и list2, хранящиеся в коллекциях? –

+0

список2 пуст. Lıke, как я сказал, мне нужно скопировать элементы list1 в list2 – Keikoman

+0

Txtspk вряд ли привлечет вас к поклонникам в Stackoverflow ... – dandan78

ответ

1

Похоже вы хотите разбить Resim1, Resim2 byte [] в один экземпляр типа List2, но сохраняя соответствующий тег? Если да, то это будет работать:

Настройка

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

Tyvm чувак своей работы, как шарм – Keikoman

1

Неясно, что вы хотите сделать, но если вы хотите, чтобы заполнить коллекцию объектов list2 из существующей коллекции объектов List1, вот один из способов (с помощью Linq):

// List<List1> list1Coll = new List<List1>(); 
// list1Coll.Add(....)    

List<List2> list2Coll = list1Coll.Select(o => new List2() { Tag = o.Tag, Resim = o.Resim1 }).ToList(); 
0

Это трудно понять, что вы пытаетесь сделать. Я предполагаю, что вы делаете два списка, один с вашими list1 как предметы и пустой один с list2 как такие элементы, как это:

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

Это сбивает с толку, так как список ваш класс не список , это элемент. Тем не менее, есть много способов, чтобы добавить пункты в первом список на ваш второй список, простейшие будут просто добавить их итерационно, например, как это:

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

Имейте в виде, что ваш тег не будет ваш индексом, и вам придется преобразовать примерные значения, предоставленные вами из строки в байт [].

0

Правильная ваша концепция общего списка первый

Выполните следующие действия

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