Differenza tra 2 DataTable

Ho 2 DataTable e voglio creare un terzo DataTable che contenga la differenza tra DataTable 1 e DataTable 2.

Ad esempio, DataTable1 ha i dati originali e DataTable 2 è solo una copia, come una replica. Ma quando si inserisce una nuova riga in DataTable1, DataTable2 ha appena inserito la stessa riga. Oggigiorno il mio codice fa un confronto tra DataTable1 e DataTable2, se non è uguale (è stata inserita una o più righe), DataTable2 registra nuovamente tutti i dati da DataTable1.

Come posso eseguire un comando select, che fa questa differenza e registra quei dati in un terzo DataTable?

    Considererò che ci sono due colonne per identificare le tabelle (col1,col2)

     var rowsOnlyInDt1 = dt1.AsEnumerable().Where(r => !dt2.AsEnumerable() .Any(r2 => r["col1"].Trim().ToLower() == r2["col1"].Trim().ToLower() && r["col2"].Trim().ToLower() == r2["col2"].Trim().ToLower())); DataTable result = rowsOnlyInDt1.CopyToDataTable();//The third table 

    Prova qualcosa del genere:

     table1.Merge(table2); DataTable changesTable = table1.GetChanges(); 

    Usando solo SQL puoi usare UNION per trovare facilmente le differenze, qui c’è un eccellente articolo sull’argomento: http://weblogs.sqlteam.com/jeffs/archive/2004/11/10/2737.aspx

    La query restituirà un insieme di righe vuote quando le tabelle corrispondono, altrimenti vengono restituite le diverse righe.