当字段数未知时LINQ或DataTable

时间:2010-02-25 13:36:23

标签: sql vb.net linq dataset

我有一个返回DataTable的动态查询。此DataTable将包含不同数量的列,具体取决于查询中使用的选择。 我想要一种有效的方法来过滤DataTable中的记录。

例如
DataTable包含列:A,B,C和D

我需要在程序的几个点查询这些数据 在某些时候,我可能需要记录,其中A = 10且C> 40。 在另一点上,我可能需要记录,其中A <10和D = 90等。 选择是动态的,我现在不需要在代码执行之前需要哪些列或值。

我可以简单地使用DataTable Filter并动态构建选择字符串。我对此没有任何问题。但是我想知道使用LINQ是否更适用。我是LINQ的新手,想要使用它,但不知道它的功能。

(目前我正在使用DataTable,但将来可能会改为对象集合)

请你的想法。

1 个答案:

答案 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