使用另一个表中的值搜索DataTable

时间:2013-02-21 15:02:15

标签: vb.net linq datatable linq-to-dataset

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

在下面的示例中,我有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 个答案:

答案 0 :(得分: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()