VB.net Datatable动态列使用LINQ查询字段

时间:2016-02-25 14:04:38

标签: vb.net linq dynamic datatable

对于一个项目,我试图对数据表字段进行动态查询。 让我来解释一下我在做什么。 步骤1.使用OLEDB读取数据库文件并为数据表创建快照。 步骤2.创建动态复选框,表示数据表中的字段名称。 步骤3.用户可以通过选中复选框来创建查询。从而过滤结果。

我遇到的问题是我不知道在数据表中有多少以及字段/列的名称。如果我填写硬编码的字段名称,那么查询是没有问题的:

 MyDataview = (From p In MyDataTable _
                      Where p.Field(Of Boolean)("customer") = True And _
                            p.Field(Of Boolean)("customer_ID") = True
                            Select p).AsDataView

然而,这将成为未来的问题,因为数据库因此可以更改,扩展或缩小数据库。

所以在SQL语法中,这不会有任何问题。简单地将与复选框对应的字段名称附加到Where子句以及哪里有好处。

这正是我想要实现的目标。我已经搜索了很多个小时,并尝试使用system.linq.dynamic分配,但我无法使其工作。例如:

        Dim valueQuery = MyDataTable.AsEnumerable.Where("customer").[Select]("customer")

        causes exception: 
        No property or field 'customer' exists in type 'DataRow' 

或者

Dim valueQuery = MyDataTable.AsEnumerable.Where("Field=customer").[Select]("customer")

导致异常:

  

没有财产或字段'客户'存在于' DataRow'

0 个答案:

没有答案