2013-05-21 77 views
0

我在CartItems表以下記錄:合併兩個記錄到一個和更新列

enter image description here

當我遷移的車,我想這兩個記錄與車合二爲一Test1的的ID,然後更新量2

因此,這將是CartItemId 84,CartId測試1,數量2,dateCreated會2013年5月21日,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(); 
     } 

    } 

回答

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(); 
+0

我已更新我的問題以包含MigrateCart代碼。我的想法是提取已經分配給用戶名的購物車物品清單,所以我有兩個清單,一個是基於購物車ID,一個是基於用戶名。 – Mike

+0

@Mike對不起,但我不清楚...你想合併所有cartId的CartId「Test1」(用戶名)與cartId的「19af129b ...」的? GetCartId是做什麼的?你想刪除cartItem 85,對吧? –

+0

我想我有。我用代碼更新了問題。 – Mike