2010-01-17 16 views

risposta

8

Sì @bzlm coperto in primo luogo, ma se si preferisce qualcosa di un po 'più dettagliato:

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

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

I tipi di preferisco questo da un punto di vista revisione/manutenzione Penso che sia un po' più evidente quello che sta succedendo nella select.


In risposta all'osservazione da @JfBeaulac:

Si prega di notare che questo non genererà lo SQL mostrato - per quanto io sappia in realtà non è possibile generare direttamente utilizzando Linq (a SQL), dovresti bypassare linq e andare direttamente al database. Funzionalmente dovrebbe ottenere lo stesso risultato in quanto eseguirà la selezione e quindi inserirà i dati, ma eseguirà il round-trip dei dati dal server al client e viceversa, pertanto potrebbe non essere ottimale per grandi volumi di dati.

+1

Non amate semplicemente downvotes arbitrari senza spiegazione – Murph

+2

Ciò non si tradurrà nell'istruzione SQL specificata nella domanda. Selezionerà le voci date in TableB e genererà un gruppo di istruzioni insert in TableA. Sembra che sia la stessa cosa ma non è una traduzione diretta del dato SQL. –

+0

@JfBeaulac Devo modificare il post allora. – Murph

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