Matrimony Ответов: 1

Как эффективно сравнить каждую строку в двух datatable (первичный ключ установлен)


две таблицы данных имеют одинаковую структуру, и оба первичных ключа были установлены.
обе таблицы имеют столбец флага, изначально значение является пустым.
сравните каждую строку в двух datatable и установите этот флаг, 1 означает, что имеет одну и ту же строку, 0 означает, что нет.
стол огромен, есть ли эффективный способ сделать это?

Что я уже пробовал:

What have you tried

What have you tried

What have you tried

Richard MacCutchan

Да, что вы пробовали?

Matrimony

я попробовал переходный способ, использую две петли, это очень медленно.

Matrimony

я попробовал переходный способ, использую две петли, это очень медленно.

Matrimony

кроме того, необходимо сравнить каждый столбец в таблице данных.

Karthik_Mahalingam

Воспользуйся Улучшить вопрос чтобы добавить больше информации к этому вопросу.

1 Ответов

Рейтинг:
0

Karthik_Mahalingam

использовать объект DataTable.Выбор Метода (Строка, Строка) (Система.Сведения)[^] чтобы найти строки в целевой таблице, так что вы должны устранить зацикливание.

попробуйте это, позаботьтесь о проверке и кастинге и т. д.

foreach (DataRow row in dt1.Rows)
           {
               var id = row["YourIDColumn"];
               DataRow[] rows = dt2.Select("YourIDColumn ='" + id + "'");
               if (rows.Length == 1)
               {
                   if (rows[0]["YourIDColumn"] == id)
                   {
                       // your code
                   }
                   else
                   {
                       // your code
                   }
               }
               else
               {
                   // item not found code..
               }
           }