【发布时间】:2020-04-02 08:01:17
【问题描述】:
您好,我在将我的表达式转换为 Expression<Func<T, bool>> 时遇到问题。这可能吗? Expression.Lambda 调用因Expression of type 'System.Func`2[T,System.Boolean]' cannot be used for return type 'System.Boolean' 而出错,这对我来说没有意义,因为我认为函数具有匹配的返回类型?
Expression expression = serializer.DeserializeText(serializedText);
ParameterExpression entityType = Expression.Parameter(typeof(T));
Expression<Func<T, bool>> typedExpression = Expression.Lambda<Func<T, bool>>(expression, entityType);
编辑:表达式是一个强类型的 lambda,例如s => idArray.Contains(s.SomeIntColumn) 其中 s 是 T 类型。然后使用 LINQ 序列化程序对表达式进行序列化,然后将其反序列化为 System.Linq.Expression。因为我知道它是 T 类型的函数,返回 bool,所以我想强输入它。
【问题讨论】:
-
expression是什么类型? -
这里的
serializer.DeserializeText(serializedText)是什么?没有完整的上下文很难评论,但请注意它根本没有使用 lambda 参数 -
那么表达式已经是
LambdaExpression了吗? -
请查看编辑。是的,它是一个 lambda 表达式。序列化之前是 Expression
>.