Поиск DataTable по значениям из другой таблицы
Я пытаюсь найти один DataTable
со значениями из другогоDataTable
используя LINQ, но пока нет прогресса... Как это сделать?
В приведенном ниже примере у меня есть table
, в котором я ищу, и PlTable
, который имеет только один столбец; и мне нужно получить каждую строку из table
, в котором Name
поле содержит хотя бы одну строку Name
поле в PlTable
строки
Dim ePlTable As IEnumerable(Of DataRow) = PlTable.AsEnumerable()
Dim found = From row In table.AsEnumerable
Where row(0).Contains(ePlTable)
Select row
Return found.CopyToDataTable.Rows
Конечно, это не работает, так как .Contains
хочет String
в качестве аргумента
1 ответ
Решение
Конечно, это не работает, так как.Contains хочет String в качестве аргумента
Это точно проблема, так что используйте строго типизированный Field
метод расширения, чтобы привести его к правильному типу и Enumerable.Any
посмотреть, если в этом содержится хотя бы одна строка Name
:
Dim strings = From row In PlTable Select row.Field(Of String)(0)
Dim found = From row In table.AsEnumerable
Where strings.Any(Function(s) row.Field(Of String)("Name").Contains(s))
Select row
Return found.CopyToDataTable()