我正在使用 Scott Gu 的 Dynamic Linq 并遵循以下示例:
Expression<Func<Customer, bool>> e1 = DynamicExpression.ParseLambda<Customer, bool>("City = \"London\"");
Expression<Func<Customer, bool>> e2 = DynamicExpression.ParseLambda<Customer, bool>("Orders.Count >= 10");
IQueryable<Customer> query = db.Customers.Where("@0(it) and @1(it)", e1, e2);
但在我的情况下,我想在 e1、e2... 中有 object.property 的动态变量,在 where 子句中是这样的:
Expression<Func<Customer, bool>> e1 = DynamicExpression.ParseLambda<Customer, bool>("City = **[object.property]**");
我将在运行时填充对象的 value 属性
谁能告诉我该怎么做?
谢谢
P / s:这可以在表达式的情况下完成:
var exp = "Person.Age = Persion1.Age";
var p = Expression.Parameter(typeof(Person), "Person");
var p1 = Expression.Parameter(typeof(Person1), "Person1");
var e = DynamicExpression.ParseLambda(new[] { p,p1 }, null, exp);
var result = e.Compile().DynamicInvoke(p,p1);
但我不知道如何在 where 子句中执行此操作。
编辑,如@pil0t:这种情况的答案是使用:Expression<Func<Customer, bool>> e1 = DynamicExpression.ParseLambda<Customer, bool>("Age > @0.Age",objPerson1);
我可以使用Expression<Func<Customer, bool>> e1 = DynamicExpression.ParseLambda<Customer, bool>("Age > @Persion1.Age",objPerson1);
@0 之类的东西吗??