我有以下代码 这是我如何向会话
添加值列表public ActionResult Add(Product product)
{
if (Session["AddToCart"] == null)
{
Session["AddToCart"] = new List<Product>();
}
var list = (List<Product>)Session["AddToCart"];
list.Add(product);
}
但是当会话包含多个记录时如何删除单个记录。我试图传递一个Id,但它不是从会话中删除记录。以下是我执行下一步的方法。
Public ActionResult Remove(Product product)
{
Product prod=db.Products.Single(x=>x.Id==product.Id);
var list=(List<Product>)Session["AddToCart"];
//Is this the correct approach
list.Remove(prod);
}
以上代码不起作用。我是否正确或是否有任何缺失PLZ纠正上述代码。感谢。
答案 0 :(得分:1)
试试这个,
var list=(List<Product>)Session["AddToCart"];
list.RemoveAll(p => p.Id == product.Id);
您选择使用代码db.Products.Single(x=>x.Id==product.Id);
查找产品可能与会话中的对象不同。
编辑:
或者您可以实现IEquatable<Product>
界面。在这种情况下,您的代码也会起作用。
public class Product : IEquatable<Product>
{
public int Id;
public bool Equals(Product prod)
{
return prod.Id == Id;
}
// Rest of the class
}