我试图创建一个简单的表达我有这样的简单类型:简单表达式组合
public class BSType
{
public int Length { get; set; }
public string Name { get; set; }
}
中,我试图动态创建过滤器表达式,这将是
(bsType) => bsType.Length == 3
我创建了一个表达式,它返回给我的常量3
var right = Expression.Constant(3);
然后我有另一个表达式,我的Func<BSType, int>
S的看起来像这样
Expression<Func<BSType, int>> left = bsType => bsType.Length;
当我尝试向他们提供平等的表达,像这样
Expression.Equal(left, right);
比较我得到一个错误:
The binary operator Equal is not defined for the types 'System.Func`2[ExpressionBuilder.BSType,System.Int32]' and 'System.Int32'
我觉得我需要将类型的参数传递给函数的左侧,以便它可以解析长度,但我不确定如何这样做,任何人都可以指向正确的方向?
我已经更新了我的问题,以显示大致发生了什么 –
' Expression>''你不需要提取int的一部分,这样'left'是一个'int'而不是'Expression >'? –
@TZZA耶我该怎么做?以某种方式生成可以与实体框架工作的表达式 –