【发布时间】:2011-02-01 18:08:33
【问题描述】:
如果我有一个采用布尔值的方法,例如:
public void Foo(boolean condition)
然后这样称呼它:
Foo("MyField" == "MyValue");
我可以将它组合成一个表达式树,以便构造一个对其他数据源的查询,这些数据源将使用 MyField 作为一个参数,使用 MyValue 和另一个。 我似乎只能将该条件变成一个计算结果为假的表达式。
更新
var param = Expression.Parameter(typeof(Field), field);
var prop = Expression.PropertyOrField(param, "Name");
ConstantExpression @const = Expression.Constant(value, typeof(string));
var body = Expression.Equal(prop, @const);
var lambda = Expression.Lambda<Func<Field, bool>>(body, param);
其中 Field 是一个具有两个属性的类,名称和值
【问题讨论】:
-
我认为您的“更新”中有一个错误:
Expression.Parameter的第二个参数只是 参数的逻辑名称 - 所以传入field看起来非常错误。同样,使用常量文字"Name"作为字段/属性看起来......不太可能。
标签: c# linq expression-trees