我有一个返回DataTable的动态查询。此DataTable将包含不同数量的列,具体取决于查询中使用的选择。 我想要一种有效的方法来过滤DataTable中的记录。
例如
DataTable包含列:A,B,C和D
我需要在程序的几个点查询这些数据 在某些时候,我可能需要记录,其中A = 10且C> 40。 在另一点上,我可能需要记录,其中A <10和D = 90等。 选择是动态的,我现在不需要在代码执行之前需要哪些列或值。
我可以简单地使用DataTable Filter并动态构建选择字符串。我对此没有任何问题。但是我想知道使用LINQ是否更适用。我是LINQ的新手,想要使用它,但不知道它的功能。
(目前我正在使用DataTable,但将来可能会改为对象集合)
请你的想法。
答案 0 :(得分:2)
您可以使用Linq to DataSet扩展方法(在System.Data.DataSetExtensions.dll中声明)
Dim table As New DataTable
...
Dim query1 = From r In table.AsEnumerable()
where r.Field(Of Int32)("A") = 10
AndAlso r.Field(Of Int32)("C") > 40
For Each row As DataRow In query1
' Do something with the row
Next
...
Dim query2 = From r In table.AsEnumerable()
where r.Field(Of Int32)("A") < 10
AndAlso r.Field(Of Int32)("D") = 90
For Each row As DataRow In query2
' Do something with the row
Next