2014-09-08 2 views
0

Я использую VB .NET, и я хочу проверить, существует ли Datarow (строка A) из Datatable (таблица A) в другой таблице данных (таблица B).Как проверить, существует ли datarow в datable без использования метода первичного ключа

Я попытался с помощью кода ниже:

TableA.Rows.Contains(RowA) 

я получил сообщение об ошибке: «MissingPrimaryKeyException был необработанным кодом пользователя Таблица не имеет первичный ключ.».

Не могли бы вы предложить, как я могу искать datarow в datatable без использования метода первичного ключа?

спасибо.

+0

Как выглядят данные в строке? Что означает, что строка будет в обеих таблицах? Означает ли это, что данные одинаковы? Или это тот же самый фактический объект DataRow в обеих таблицах? – Derek

+0

@Derek, типы данных в DataRow состоят из String и Boolean. Другими словами, он имеет смешанные столбцы булевых и строк. И TableA, и TableB имеют одинаковые структуры данных. (Оба имеют одинаковые столбцы). Когда я удаляю определенную строку в TableA, я хотел бы выполнить ту же задачу в TableB. – user2150279

ответ

2
Dim i As Integer = (datatable.Rows.Count - 1) 
Do While (i >= 0) 
    If datatable.Rows(i)("Column1") = RowA("Column1") And datatable.Rows(i)("Column2") = RowA("Column2") Then 
     datatable.Rows(i).Delete 
    End If 
    i = i - 1 
Loop 

Вам, конечно, придется менять названия столбцов.

0

Отметьте row state от RowA, если это Detached, таблица не содержит его.

Без первичного ключа, я не знаю, как вы можете заставить его работать лучше.

Смежные вопросы