我有以下代码:
Dim query As IQueryable(Of someObject) =
New ObjectQuery(Of someObject)(queryString, db, MergeOption.NoTracking)
.Where(CType(Function(x) x.Publish = True,
Expression(Of Func(Of someObject, Boolean))))
它给了我一个错误说:
无法转换Func(someObject)类型的表达式System.Nullable(Of Boolean)键入System.Linq.Expressions.Expression(Of System.Func(someObject,Boolean))。
我也尝试过:
.Where(CType(Function(x) x.Publish = True,
Expression(Of Func(Of someObject, Nullable(Of Boolean)))))
也不起作用。
如果我没有CType,我的where
会出现来自IQueryable和IEnumerable的缩小转换错误,所以我需要那里,但我不知道如何将参数作为表达式写入所以它可以转换。有什么帮助吗?
答案 0 :(得分:1)
此处不要使用CType
转换 - 直接创建表达式:
Dim expr As Expression(Of Func(Of someObject, Nullable(Of Boolean))) =
Function(x) x.Publish = True
Dim query As IQueryable(Of someObject) =
New ObjectQuery(Of someObject)(queryString, db, MergeOption.NoTracking)
.Where(expr)
表达式需要这样创建。无法将现有Func
转换为表达式。