0

我的 CartItems 表中有以下记录:

在此处输入图像描述

当我迁移购物车时,我想将两条记录合并为一条,购物车 id 为 Test1,然后将数量更新为 2。

所以它将是 CartItemId 84, CartId Test1, Quantity 2, DateCreated 5/21/2013, ProductId 16

我将如何在 linq/EF 中执行此操作?

编辑

 public void MigrateCart(string userName)
    {
        ShoppingCartId = GetCartId();

        var shoppingCart = _context.ShoppingCartItems.Where(c => c.CartId == ShoppingCartId);

        foreach (var item in shoppingCart)
        {
            item.CartId = userName;
        }

        _context.SaveChanges();

    }

编辑

我想我有。

public void MigrateCart(string userName)
    {
        ShoppingCartId = GetCartId();

        if (ShoppingCartId != userName)
        {
            var shoppingCart = _context.ShoppingCartItems.Where(c => c.CartId == ShoppingCartId).ToList();
            var userShoppingCartItems = _context.ShoppingCartItems.Where(c => c.CartId == userName).ToList();

            foreach (var item in shoppingCart)
            {
                foreach (var userShoppingCartItem in userShoppingCartItems)
                {
                    if (item.ProductId == userShoppingCartItem.ProductId)
                    {
                        item.Quantity += userShoppingCartItem.Quantity;
                        item.CartId = userName;
                        _context.ShoppingCartItems.Remove(userShoppingCartItem);
                    }
                }
                item.CartId = userName;
            }

            _context.SaveChanges();

        }
        else
        {
            var shoppingCart = _context.ShoppingCartItems.Where(c => c.CartId == ShoppingCartId);

            foreach (var item in shoppingCart)
            {
                item.CartId = userName;
            }

            _context.SaveChanges();
        }

    }
4

1 回答 1

0

由于你不问如何获得这两个项目,我只是给你一个非常土气的方式。

var item1 = context.CartItems.FirstOrDefault(m => m.Id == 84);
var item2 = context.CartItems.FirstOrDefault(m => m.Id == 85);

item1.Quantity += item2.Quantity;//add quantity of item2 to item1
context.CartItems.Remove(item2);//remove item2
context.SaveChanges();
于 2013-05-21T14:44:47.983 回答