【发布时间】:2013-11-05 03:43:00
【问题描述】:
我正在使用 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... 的 where 子句中拥有 object.property 的动态变量,如下所示:
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。 ?
【问题讨论】:
标签: c# linq dynamic lambda where