我试图创建一个简单的表达式我有这个简单的类型:
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>
的表达式,看起来像这样
Expression<Func<BSType, int>> left = bsType => bsType.Length;
当我尝试将它们与像这样的等同表达式进行比较时
Expression.Equal(left, right);
我收到错误:
没有为类型&System; System.Func`2 [ExpressionBuilder.BSType,System.Int32]&#39;定义二元运算符Equal。和&#39; System.Int32&#39;
我觉得我需要将Type的参数传递给函数的左侧,以便它可以解析长度,但是我不确定如何这样做,有人能指出我的意思吗?正确的方向?