Разница между 2 DataTable - PullRequest
       12

Разница между 2 DataTable

0 голосов
/ 27 сентября 2011

У меня есть 2 DataTable, и я хочу создать третий DataTable, который содержит разницу между DataTable 1 и DataTable 2.

Например, DataTable1 содержит исходные данные, а DataTable 2 - это просто копия, похожая на репликацию. Но когда вы вставляете новую строку в DataTable1, DataTable2 просто вставляет эту же строку. В настоящее время мой код выполняет сравнение между DataTable1 и DataTable2, если не равно (вставлена ​​1 строка или более), DataTable2 снова записывает все данные из DataTable1.

Как я могу сделать команду выбора, которая делает эту разницу и записывает эти данные в третью таблицу данных?

Ответы [ 3 ]

1 голос
/ 27 сентября 2011

Попробуйте что-то вроде этого:

table1.Merge(table2); 
DataTable changesTable = table1.GetChanges(); 
0 голосов
/ 27 сентября 2011

Я буду считать, что есть две колонки для идентификации таблиц (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
0 голосов
/ 27 сентября 2011

Используя только SQL, вы можете использовать UNION, чтобы легко находить различия, здесь есть отличная статья на эту тему: http://weblogs.sqlteam.com/jeffs/archive/2004/11/10/2737.aspx

Запрос вернет пустой набор строк при совпадении таблиц, в противном случаеразличные строки возвращаются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...