2016-04-29 7 views
0

Я хочу скопировать данные из одной коллекции в другую. Я использую следующий код.копировать данные из одной коллекции в другую C#

foreach (var x in invVM.invFreeItemsWithBatch) 
      { 
       invVM.invitemsWithBatch.Add(x); 
      } 

Но это неправильно. Как я могу исправить?

enter image description here

enter image description here

public ObservableCollection<InvFreeItemWithBatch> invFreeItemsWithBatch = new ObservableCollection<InvFreeItemWithBatch>(); 
    public ObservableCollection<InvFreeItemWithBatch> AddInvFreeItemsByBatch(int intitemID, string stritem, double dblqty, double dblamount, string struOM, bool blnfreeIssue, 
     double dbluPrice, double dbldiscPerce, double dbldiscAmount, string strbatch, double dblBalanceForFreeqty) 
    { 
     invFreeItemsWithBatch.Add(new InvFreeItemWithBatch(intitemID, stritem, dblqty, dblamount, struOM, blnfreeIssue, dbluPrice, dbldiscPerce, 
      dbldiscAmount, strbatch, dblBalanceForFreeqty)); 
     stritem = ""; struOM = ""; 
     return invFreeItemsWithBatch; 
    } 

    public ObservableCollection<InvItemWithBatch> invitemsWithBatch = new ObservableCollection<InvItemWithBatch>(); 
    public ObservableCollection<InvItemWithBatch> AddInvItemsByBatch(int intitemID, string stritem, double dblqty, double dblamount, string struOM, bool blnfreeIssue, 
     double dbluPrice, double dbldiscPerce, double dbldiscAmount, string strbatch, double dblBalanceForFreeqty) 
    { 
     invitemsWithBatch.Add(new InvItemWithBatch(intitemID, stritem, dblqty, dblamount, struOM, blnfreeIssue, dbluPrice, dbldiscPerce, 
      dbldiscAmount, strbatch, dblBalanceForFreeqty)); 
     stritem = ""; struOM = ""; 
     return invitemsWithBatch; 
    } 
+1

Что такое invitemsWithBatch и invFreeItemsWithBatch? – BugFinder

+0

Как сказал А.Ш., нам нужно знать, что является «неправильным», что такое ошибка? Возможно, в то же время вы можете посмотреть также на этот вопрос/ответ: http://stackoverflow.com/questions/4493858/elegant-way-to-combine-multiple-collections-of-elements –

+1

Возможный дубликат [Как сделать скопировать элементы из списка в список без foreach?] (http://stackoverflow.com/questions/1952185/how-do-i-copy-items-from-list-to-list-without-foreach) –

ответ

0

invFreeItemsWithBatch содержит различные типы элементов, чем invitemsWithBatch.

В одном списке содержится тип InvItemWithBatch элементов, а другой содержит InvFreeItemWithBatch.

Вы можете создать новый элемент в foreach, если хотите.

foreach (var x in invVM.invFreeItemsWithBatch) 
{ 
    var newItem = new InvFreeItemWithBatch(); 
    // set the values of newItem to match the values of x 
    // ... 
    invVM.invitemsWithBatch.Add(newItem); 
} 

рассмотреть также делает InvItemWithBatch базовый класс InvFreeItemWithBatch:

class InvFreeItemWithBatch : InvItemWithBatch 

Таким образом, вы можете ввести

foreach (var x in invVM.invFreeItemsWithBatch) 
     { 
      invVM.invitemsWithBatch.Add(x); 
     } 

Но Вы должны учитывать, что два списка будет иметь одинаковую ссылку для x.

Смежные вопросы