2010-01-17 22 views
6

bir ekleme yapmak için bir yolu var mı/Bu sql çevirir Linq ile seçmek ile Seç Ekle /: Evet @bzlm önce onu kapalıLinq To-SQL

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

cevap

8

, ama eğer Ben select içinde neler olduğunu onun biraz daha belirgin düşünüyorum ben tür bir görüş yorum/bakım noktasından bu tercih

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

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

: biraz daha ayrıntılı bir şeyler tercih ederim. @JfBeaulac tarafından gözlem cevaben


:

bu gösterilen SQL oluşturmaz unutmayın - Şimdiye kadar ben (o Linq kullanarak doğrudan üretmek için aslında mümkün değildir farkında olarak SQL'e), linq atlamak ve doğrudan veritabanına gitmek zorunda. İşlevsel olarak, seçimin gerçekleştirileceği ve daha sonra verileri yerleştireceği için aynı sonucu elde etmesi gerekir - ancak verileri sunucudan istemciye ve geriye doğru açacak ve bu nedenle büyük hacimli veriler için uygun olmayabilir.

+1

Hiçbir açıklama olmadan keyfi düşüş notlarını sevmiyor musunuz? – Murph

+2

Bu, sorunda belirtilen SQL deyimini çevirmez. TabloB'de verilen girdileri seçer ve TableA'ya bir dizi ekleme ifadesi oluşturur. Aynı şey gibi görünüyor ama verilen SQL'in doğrudan çevirisi değildir. –

+0

@JfBeaulac Bu yazıyı sonra değiştireceğim. – Murph

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