使用Linq-To-SQL插入/选择

Lie*_*oen 7 select insert linq-to-sql

有没有办法用Linq进行插入/选择转换为这个sql:

INSERT INTO TableA (...)
SELECT ...
FROM TableB
WHERE ...
Run Code Online (Sandbox Code Playgroud)

Mur*_*rph 9

是的,@ 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();
Run Code Online (Sandbox Code Playgroud)

从评论/维护的角度来看,我更喜欢这一点,因为我认为选择中发生了什么更为明显.


回应@JfBeaulac的观察:

请注意,这不会生成显示的SQL - 只要我知道它实际上不可能直接使用Linq(到SQL)生成,您必须绕过linq并直接进入数据库.在功能上它应该实现相同的结果,因为它将执行选择然后插入数据 - 但它将数据从服务器往返到客户端并返回,因此对于大量数据可能不是最佳的.

  • 这不会转换为问题中指定的SQL语句.它将选择TableB中的给定条目,并在TableA中生成一堆insert语句.它似乎是相同的东西,但不是给定SQL的直接翻译. (2认同)