0
私はショッピングカートを作成しており、カートを追跡するために製品ビューモデルのリストを含むセッションがあります。リスト内の特定のビューモデルを編集して削除する
これは、カートに追加するためのアクションメソッドです:
public ActionResult AddToCart(string id)
{
List<CartVM> cartVMList = new List<CartVM>();
CartVM cartVM = new CartVM();
int productId = Int32.Parse(id);
Db db = new Db();
var result = db.Products.FirstOrDefault(x => x.Id == productId);
decimal price = result.Price;
cartVM.ProductId = productId;
cartVM.Quantity = 1;
cartVM.Price = price;
if (Session["cart"] != null)
{
cartVMList = (List<CartVM>)Session["cart"];
cartVMList.Add(cartVM);
}
else
{
cartVMList.Add(cartVM);
}
Session["cart"] = cartVMList;
//return Content(id);
return RedirectToAction("Index", "ShoppingCart");
}
新製品を追加するときそれはとても例えば、動作します5つの新しい製品を追加するとセッションには5つの製品のリストが含まれますが、たとえばProductId
に基づいてリストから特定のビューモデルを編集して削除するにはどうすればよいですか?
ありがとうございます、私のコードでこれを少しテストして、私が探しているものと思われます。しかし、FirstOrDefaultはリストと一緒に使用するとどうなりますか?私はそれがEFに存在することを知っていますが、この文脈では何ですか? – frc
'FirstOrDefault'はLinqベースの関数で、' IEnumerable'インタフェースで公開されています。 EFはLinq式をSQL(通常)に変換します。しかし、メモリ内のオブジェクトに対してLinqを使用することができます。この特定の場合、FirstOrDefaultは、 'id'と一致する最初の' cartVM'(リスト内のオブジェクト)を返します。一致しない場合はnullを返します。最初の一致が見つかると、Linq反復はループを終了します( 'Single' /' SingleOrDefault'とは対照的に)。このサイトは正常終了します:http://www.technicaloverload.com/linq-single-vs-singleordefault-vs-first-vs-firstordefault/ –