使用其他表中的值搜索DataTable



我正在尝试使用LINQ搜索一个DataTable和另一个DataTable的值,但到目前为止没有进展。。。怎么做?

在下面的例子中,我有table,我在其中搜索,还有PlTable,它只有一列;并且我需要从table中检索每一行,其中Name字段在PlTable的行中至少包含一个Name字段的字符串。

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作为参数

当然它不起作用,因为.Contains希望字符串作为参数

这就是问题所在,所以使用强类型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()

最新更新