C# 为什么列表显示奇怪的行为?

C# 为什么列表显示奇怪的行为?,c#,.net,list,generics,entity-framework-4,C#,.net,List,Generics,Entity Framework 4,关于Vs2010 EF,C#的工作 有两个列表(oLisTranItem,oListTaxItem),需要在另一个列表中复制一个列表属性值,然后我需要处理新列表。问题是在将内容元素一个列表复制到另一个列表后,任何类型的更改都会影响两个列表,为什么会发生这种情况,我只是在列表中更改,但在两个列表中都会发生更改 请检查我的吼叫语法 List<TransactionItem> oLisTranItem = new List<TransactionItem>

关于Vs2010 EF,C#的工作

有两个列表(oLisTranItem,oListTaxItem),需要在另一个列表中复制一个列表属性值,然后我需要处理新列表。问题是在将内容元素一个列表复制到另一个列表后,任何类型的更改都会影响两个列表,为什么会发生这种情况,我只是在列表中更改,但在两个列表中都会发生更改 请检查我的吼叫语法

            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;


                }
    }
List-item=new-List();
List oListTaxItem=新列表();
oLisTranItem=_TransactionItem;
oListTaxItem=_交易项目税;
TransactionItem tmpItem=新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);
}
其他的
{
_TransactionItemTax=新列表();
}
int n计数器=5;
foreach(oListTaxItem中的TransactionItem)
{
如果(item.QuotationTaxID==0)
{
n计数器=n计数器+1;
item.QuotationTaxID=n计数器;
}
}
请帮我找出这个问题的原因,如何解决这个问题


如果您有任何疑问,请询问,非常感谢。

TransactionItem可能是一个类,对吗?而不是结构

默认情况下,类的每个类型都是引用类型。这意味着列表中的内容不是事务项的实际值,而是引用这些值(C++指针)。因此,当您将数据从一个列表复制到另一个列表时,您只是在复制引用

您需要将项目从一个列表切换到另一个列表。为类提供一个克隆实例的方法,并使用该方法将项目从一个列表复制到另一个列表