2010-01-17 70 views

Trả lời

8

Có @bzlm bao phủ nó lần đầu tiên, nhưng nếu bạn thích nội dung chi tiết hơn một chút:

// dc = DataContext, assumes TableA contains items of type A 
var toInsert = from b in TableB 
       where ... 
       select new A 
       { 
        ... 
       }; 

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

Tôi thích điều này hơn từ điểm xem xét/bảo trì khi tôi nghĩ rõ hơn điều gì đang xảy ra trong lựa chọn.


Để đối phó với các quan sát bởi @JfBeaulac:

Xin lưu ý rằng này sẽ không tạo ra SQL thể hiện - cho đến nay như tôi biết nó không phải là thực sự có thể tạo ra trực tiếp sử dụng LINQ (đến SQL), bạn phải bỏ qua LINQ và đi thẳng đến cơ sở dữ liệu. Chức năng của nó sẽ đạt được kết quả tương tự ở chỗ nó sẽ thực hiện lựa chọn và sau đó chèn dữ liệu - nhưng nó sẽ làm tròn dữ liệu từ máy chủ đến máy khách và ngược lại vì vậy có thể không tối ưu cho khối lượng lớn dữ liệu.

+1

Bạn không chỉ yêu thích downvotes tùy ý mà không có lời giải thích – Murph

+2

Điều này sẽ không chuyển sang câu lệnh SQL được chỉ định trong câu hỏi. Nó sẽ chọn các mục đã cho trong TableB và tạo ra một loạt các câu lệnh chèn vào TableA. Nó xuất hiện để làm điều tương tự nhưng không phải là một bản dịch trực tiếp của SQL đã cho. –

+0

@JfBeaulac Tôi sẽ sửa đổi bài đăng sau đó. – Murph

1
context 
    .TableA 
    .InsertAllOnSubmit(
    context 
     .TableB 
     .Where(...) 
     .Select(b => new A { ... }) 
); 
Các vấn đề liên quan