有没有办法做一个插入使用LINQ这相当于这个SQL /选择:插入/选择与LINQ到SQL
INSERT INTO TableA (...)
SELECT ...
FROM TableB
WHERE ...
有没有办法做一个插入使用LINQ这相当于这个SQL /选择:插入/选择与LINQ到SQL
INSERT INTO TableA (...)
SELECT ...
FROM TableB
WHERE ...
是@bzlm覆盖它,但是,如果你喜欢的东西多一点冗长:
// dc = DataContext, assumes TableA contains items of type A
var toInsert = from b in TableB
where ...
select new A
{
...
};
TableA.InsertAllOnSubmit(toInsert);
dc.SubmitChanges();
我有种从一个审查/维修点喜欢这个,因为我觉得它有点更明显发生了什么事的选择。
为响应观察@JfBeaulac:
请注意,这不会生成中的SQL - 只要我知道它是不能够实际直接使用LINQ to生成(到SQL),你必须绕过linq并直接进入数据库。在功能上它应该达到相同的结果,因为它将执行选择,然后插入数据 - 但它会将数据从服务器到客户端的往返传回,因此可能不适用于大量数据。
context
.TableA
.InsertAllOnSubmit(
context
.TableB
.Where(...)
.Select(b => new A { ... })
);
难道你不喜欢随意的任何downvotes没有解释 – Murph 2014-01-21 21:45:36
这不会转化为问题中指定的SQL语句。它将选择TableB中的给定条目,并在TableA中生成一堆插入语句。它看起来很相似,但不是给定SQL的直接翻译。 – 2014-08-22 12:51:14
@JfBeaulac我会修改那篇文章。 – Murph 2014-08-22 16:36:48