Поиск 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()
Другие вопросы по тегам