Linq to sql 使用Linq到SQL插入/选择

Linq to sql 使用Linq到SQL插入/选择,linq-to-sql,select,insert,Linq To Sql,Select,Insert,是否有一种方法可以使用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 ...

是否有一种方法可以使用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();
从审查/维护的角度来看,我比较喜欢这样做,因为我认为在select中发生的事情更加明显


针对@JfBeaulac的观察:


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

这不会转换为问题中指定的SQL语句。它将选择TableB中给定的条目,并在TableA中生成一组insert语句。它似乎做了同样的事情,但不是给定SQL的直接翻译。@JfBeaulac我将修改帖子。
// dc = DataContext, assumes TableA contains items of type A
var toInsert = from b in TableB
               where ...
               select new A 
               {
                   ...
               };

TableA.InsertAllOnSubmit(toInsert);
dc.SubmitChanges();