2016-04-29 192 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

正如ASh所说,我们需要知道什么是“错”,错误是什么?也许在此期间,你也可以看看这个问题/答案: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

相关问题