Есть ли способ сделать вставление/выбирание с 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 (для SQL), вам нужно будет обойти LINQ и перейти прямо в базу данных. Функционально его следует добиться того же результата в том, что он выполнит выделение и затем вставит данные - но она будет круглосуточно данных с сервера к клиенту и обратно, поэтому не может быть оптимальным для больших объемов данных.
context
.TableA
.InsertAllOnSubmit(
context
.TableB
.Where( ... )
.Select(b => new A { ... })
);