2010-01-17 1 views
6

삽입 할 수있는 방법이 있나요 /이 SQL로 변환 Linq에 함께 선택과 삽입을 선택/: 예 @bzlm 먼저 덮여Linq에-TO-SQL

INSERT INTO TableA (...) 
SELECT ... 
FROM TableB 
WHERE ... 

답변

8

하지만 경우 내가 선택에 무슨 일이 일어나고 있는지의 좀 더 분명 생각하는 내가 가지보기 리뷰/유지 보수 점에서이 선호

// 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 무시하고 바로 데이터베이스로 이동해야 할거야. 기능적으로는 선택을 수행하고 데이터를 삽입한다는 점에서 동일한 결과를 얻지 만 서버에서 클라이언트로 데이터를 왕복 전송하므로 대용량 데이터에는 적합하지 않을 수 있습니다.

+1

설명이없는 임의의 downvotes를 좋아하지 마십시오 – Murph

+2

질문에 지정된 SQL 문으로 변환되지 않습니다. TableB에서 주어진 엔트리를 선택하고, TableA에 많은 insert 문을 생성합니다. 동일한 일을하는 것처럼 보이지만 주어진 SQL의 직접적인 번역은 아닙니다. –

+0

@JfBeaulac 나는 그때의 게시물을 수정한다. – Murph

1
context 
    .TableA 
    .InsertAllOnSubmit(
    context 
     .TableB 
     .Where(...) 
     .Select(b => new A { ... }) 
);