Сравните две таблицы данных в vb.net - PullRequest
0 голосов
/ 11 июля 2020

DataTable One содержит только один столбец (Code)

Code
3
7

И Second Datatable также содержит только один столбец (ProductCode)

ProductCode
2
3
6
7

Я хочу сравнить, все ли значения первого datatable существуют во втором datatable с использованием наилучшей техники. в настоящее время я использую каждый раз, кроме одного, это ЛОЖЬ, а второй раз ИСТИНА, поэтому это не выглядит практичным.

Applicable = False
For Each chkRow As DataRow In chk.Rows
   For Each dtRow As DataRow In dt.Rows
      If chkRow("ProductCode") = dtRow("Code") Then
         Applicable = True
         Exit For
       Else
         Applicable = False
       End If
    Next
Next

Пожалуйста, предложите лучшее решение.

1 Ответ

2 голосов
/ 11 июля 2020

Я бы предпочел использовать запрос LINQ:

Dim codes = table1.AsEnumerable().
                   Select(Function(row) row.Field(Of Integer)("Code"))
Dim productCodes = table2.AsEnumerable().
                          Select(Function(row) row.Field(Of Integer)("ProductCode")).
                          ToArray()

If codes.All(Function(code) productCodes.Contains(code)) Then
    '...
End If

Обратите внимание, что есть вызов ToArray для productCodes , но не кодов . Это потому, что productCodes необходимо перечислить несколько раз, и вы не хотите делать это в отложенном запросе.

...