有沒有辦法做一個插入使用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