【问题标题】:copy data from one collection to another C#将数据从一个集合复制到另一个 C#
【发布时间】:2016-08-24 05:00:59
【问题描述】:

我想将数据从一个集合复制到另一个集合。我正在使用以下代码。

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

但这是错误的。我该如何纠正?

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

【问题讨论】:

标签: c# linq collections


【解决方案1】:

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 具有相同的引用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-28
    • 2017-09-07
    • 2020-04-26
    • 1970-01-01
    • 1970-01-01
    • 2021-10-23
    相关资源
    最近更新 更多