【发布时间】:2010-01-17 12:18:03
【问题描述】:
有没有办法用 Linq 进行插入/选择,转换成这个 sql:
INSERT INTO TableA (...)
SELECT ...
FROM TableB
WHERE ...
【问题讨论】:
标签: linq-to-sql select insert
有没有办法用 Linq 进行插入/选择,转换成这个 sql:
INSERT INTO TableA (...)
SELECT ...
FROM TableB
WHERE ...
【问题讨论】:
标签: linq-to-sql select insert
是的@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(到 SQL)生成,您必须绕过 linq 并直接进入数据库。从功能上讲,它应该实现相同的结果,因为它将执行选择,然后插入数据 - 但它将数据从服务器到客户端并返回,因此对于大量数据可能不是最佳的。
【讨论】:
context
.TableA
.InsertAllOnSubmit(
context
.TableB
.Where( ... )
.Select(b => new A { ... })
);
【讨论】: