C# 更改我的新列表而不更改原始列表
这是我的原始列表:C# 更改我的新列表而不更改原始列表,c#,C#,这是我的原始列表: var cart = _workContext.CurrentCustomer.ShoppingCartItems .Where(sci => sci.ShoppingCartType == ShoppingCartType.ShoppingCart) .LimitPerStore(_storeContext.CurrentStore.Id)
var cart = _workContext.CurrentCustomer.ShoppingCartItems
.Where(sci => sci.ShoppingCartType == ShoppingCartType.ShoppingCart)
.LimitPerStore(_storeContext.CurrentStore.Id)
.ToList();
我查看了此链接:
我知道我有一个复制的方法,所以这是我的方法:
private List<ShoppingCartItem> CopyShoppingCartItems(List<ShoppingCartItem> target)
{
//var tmp = new List<ShoppingCartItem>(target);
var tmp = target.ToList();
return tmp;
}
但是newQuantity
同时插入列表
:购物车和更新前购物车
有人能帮我吗?那么您实际上是在更改列表中的项目,而不是将项目插入列表中。当列表引用不同对象时,它们包含对相同对象的引用。这就是为什么在这两种情况下都会更新项目。考虑使用解决问题的方法。可以通过创建复制构造函数来完成:
public ShoppingCartItem(ShoppingCartItem item)
{
// copy all your fields there
}
然后:
private List<ShoppingCartItem> CopyShoppingCartItems(List<ShoppingCartItem> target)
{
var tmp = target.ConvertAll(i => new ShoppingCartItem(i));
return tmp;
}
私有列表CopyShoppingCartItems(列表目标)
{
var tmp=target.ConvertAll(i=>newshoppingcartitem(i));
返回tmp;
}
因此您实际上是在更改列表中的项目,而不是将项目插入列表中。当列表引用不同对象时,它们包含对相同对象的引用。这就是为什么在这两种情况下都会更新项目。考虑使用解决问题的方法。可以通过创建复制构造函数来完成:
public ShoppingCartItem(ShoppingCartItem item)
{
// copy all your fields there
}
然后:
private List<ShoppingCartItem> CopyShoppingCartItems(List<ShoppingCartItem> target)
{
var tmp = target.ConvertAll(i => new ShoppingCartItem(i));
return tmp;
}
私有列表CopyShoppingCartItems(列表目标)
{
var tmp=target.ConvertAll(i=>newshoppingcartitem(i));
返回tmp;
}