示例#1
0
        internal bool Merge(CartModel otherCart)
        {
            if (otherCart != null && Id != otherCart.Id)
            {
                var existingItems = otherCart.CartItems.Intersect(CartItems);
                var newItems      = otherCart.CartItems.Except(existingItems);

                for (int i = 0; i < CartItems.Length; i++)
                {
                    int?moreQuantity = (existingItems.FirstOrDefault(ci => ci.ProductId == CartItems[i].ProductId)?.Quantity);
                    if (moreQuantity.HasValue)
                    {
                        CartItems[i].Quantity += moreQuantity.Value;
                    }
                }

                CartItems = CartItems.Concat(newItems).ToArray();

                return(true);
            }

            return(false);
        }