我有一类名为ACCESSOIRE:C#列表包含项目
class accessoire
{
public int value1 { get; set; }
public string Value2 { get; set; }
}
然后我有一个产品
List<accessoire> accessoires
的列表,我有一个用户界面,其中用户挑选他从希望的产品一个DataGridview并且当他选择它时启动一个将该项添加到列表中的事件:
private void ProductBrowser_OnItemAdded(Accessoire item)
{
if (Cart.Contains(item))
{
MessageBox.Show("Produit deja ajoutée au panier ! ");
}
else
{
Cart.Add(item);
ProductView.Rows.Add(item.Ref, item.Name, Function.CatName(item.Cat), item.SellPrice, "1", Convert.ToDouble(item.SellPrice) * Convert.ToDouble(item.QtetoSell));
TotalPriceSet();
MessageBox.Show("Produit Ajouté !");
}
}
这不是工作K,但是当我将其更改为:
private void ProductBrowser_OnItemAdded(Accessoire item)
{
var InList = Cart.Find(product => product.Ref == item.Ref);
if (Cart.Contains(InList))
{
MessageBox.Show("Product already in list ! ");
}
else
{
Cart.Add(item);
ProductView.Rows.Add(item.Ref, item.Name, Function.CatName(item.Cat), item.SellPrice, "1", Convert.ToDouble(item.SellPrice) * Convert.ToDouble(item.QtetoSell));
TotalPriceSet();
MessageBox.Show("product added !");
}
}
它的工作原理,但我'仍然不知道为什么第一个代码does not工作也不断加入该项目的名单?以其他方式.Contains()
方法如何工作?它是什么检查知道该项目是否或列表不是?
除非[另有说明](https://msdn.microsoft.com/en-us/library/bb339118(v = vs.110))。aspx),'Contains'使用“默认比较器”,对于类只是[检查查看对象是否是同一个引用](https://msdn.microsoft.com/zh-cn/library/system.object .referenceequals(v = vs.110)的.aspx)。 – stuartd
我的猜测是传入的'Accessoire'对象不完整。您应该在某个地方列出所有产品的列表,并使用传入的ID获取完整对象并将该完整对象添加到购物车。 – nurdyguy
什么是购物车?这些与你的'accessoire'课程有什么关系? – krillgar