如何从存储在会话中的记录列表中删除单个记录
How to delete a single record from a list of records stored in a session
我有以下代码
这是我向会话
添加值列表的方法
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);
}
以上代码无效。我是正确的还是有什么遗漏请更正上面的代码。谢谢
试试这个,
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
}
我有以下代码 这是我向会话
添加值列表的方法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);
}
以上代码无效。我是正确的还是有什么遗漏请更正上面的代码。谢谢
试试这个,
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
}