【发布时间】:2020-07-19 10:23:47
【问题描述】:
我有一个 DataTable,喜欢通过 Dynamic LINQ 进行查询。
Imports System.Linq.Dynamic.Core
...
Dim Values as DataTable
...
当我简单地选择一个特定的列(名为“年龄”)时,例如:
Dim result = Values.AsEnumerable.AsQueryable.Select("age")
但现在我想通过 where 子句过滤 DataTable,但它不起作用,或者我不知道如何正确实现:
Dim result = Values.AsEnumerable.AsQueryable.Where("age > 60")
我得到了:
"二元运算符 GreaterThan 没有为 System.Object 和 System.Int32"
好的,我在一定程度上理解了错误消息,但我不知道如何相应地更改我的代码。
【问题讨论】:
-
我不会将此作为答案发布,因为我还没有测试过它,但事实上从
DataRow获取值总是返回一个对象引用,你大概必须转换/转换为实际数据的类型。在这种情况下,我的首选是"CInt(age)"、"Convert.ToInt32(age)"和"DirectCast(age, Integer)"。 -
尝试创建一个强类型数据集/数据表。它们也可以在不需要 AsXXXable 的情况下查询
-
@jmcilhinney 非常感谢这个最初的想法。
"Convert.ToInt32(age)"有效。