0

Vs2010 EF、C# で作業します。

2 つの list(oLisTranItem,oListTaxItem) があり、1 つのリスト プロパティの値を別のリストにコピーする必要がある場合、新しいリストで作業する必要があります。問題は、コンテンツ要素を 1 つのリストから別のリストにコピーした後です。これは、リストを変更しただけですが、両方のリストで変更が発生しました 次の構文を確認してください。

            List<TransactionItem> oLisTranItem = new List<TransactionItem>();
            List<TransactionItem> oListTaxItem = new List<TransactionItem>();

            oLisTranItem = _TransactionItem;
            oListTaxItem = _TransactionItemTax;

            TransactionItem tmpItem = new TransactionItem();

            tmpItem = oLisTranItem.Where(item => item.QuotationDetailID == quotationDetailID && item.Action != Entity.ActionMode.Delete && item.IsDeleted == false).FirstOrDefault();

            if (tmpItem.IsNotNull())
            {

                tmpItem.Action = Entity.ActionMode.Add;
                oListTaxItem.Add(tmpItem);

            }
            else
            {
                _TransactionItemTax = new List<TransactionItem>();
            }

            int nCounter = 5;

            foreach (TransactionItem item in oListTaxItem)
            {


                if (item.QuotationTaxID ==0)
                {
                    nCounter = nCounter + 1;

                    item.QuotationTaxID = nCounter;


                }
    }

この問題が発生する理由、この問題を解決する方法を特定するのを手伝ってください。

ご不明な点がございましたら、お問い合わせください。よろしくお願いいたします。

4

1 に答える 1

1

TransactionItem はおそらくクラスですよね?そして構造体ではありません。

クラスであるすべての型は、既定では参照型です。つまり、リストにあるのはトランザクション項目の実際の値ではなく、それらの値への参照 (C++ ポインターと考えてください) です。したがって、あるリストから別のリストにデータをコピーするときは、参照をコピーしているだけです。

あるリストから別のリストにアイテムを複製する必要があります。インスタンスを複製するメソッドをクラスに与え、そのメソッドを使用してあるリストから別のリストにアイテムをコピーします。

于 2013-05-19T04:39:19.827 に答える