对于一个项目,我试图对数据表字段进行动态查询。 让我来解释一下我在做什么。 步骤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'
中