Linq如何将两列的所有值移动到另一个表

时间:2014-06-02 10:41:17

标签: c# asp.net sql linq linq-to-sql

我想将我的表的两列移动到另一个表。我可以选择我想要移动的值,但我无法移动它们。我该怎么做?这是我的实现

var cartQuery = (from c in db.CartTbls.AsQueryable()
                                 join cs in db.CartShoeTbls on c.CartID equals cs.CartID
                                 where c.CustomerID == cusID
                                 select new {c.CustomerID,c.TotalPrice,cs.ShoeID,cs.Quantity});

我想要做的是复制ShoeID和Quantity attiributes的所有值。任何帮助都会得到满足。

2 个答案:

答案 0 :(得分:3)

使用时应将选择添加到表中并保存更改:

foreach (var item in cartQuery)
    db.OrderShoeTbl.Add(new OrderShoe()
        { ShoeID = item.ShoeID, Quantity = item.Quantity });

db.SaveChanges();

如果您使用Linq to SQL,插入是不同的,应该如下所示:

foreach (var item in cartQuery)
    db.OrderShoeTbl.InsertOnSubmit(new OrderShoe()
        { ShoeID = item.ShoeID, Quantity = item.Quantity });

db.SubmitChanges();

答案 1 :(得分:3)

Stefan的回答是可以的,但是你可以一步插入所有内容:

var cartQuery = (from c in db.CartTbls.AsQueryable()
        join cs in db.CartShoeTbls on c.CartID equals cs.CartID
        where c.CustomerID == cusID
        select new OrderShoeTbl{ShoeID = c.ShoeID, Quantity = c.Quantity});

    db.OrderShoeTbl.InsertAllOnSubmit(cartQuery);

    db.SubmitChanges();

修改

如果要从源表中删除数据,我还会将所有内容包装在单个事务中,以避免出现错误时出现不一致。