如果我有一个产品。
var p = new Product { Price = 30 };
我有以下的 LINQ 查询:
var q = repo.Products().Where(x=>x.Price == p.Price).ToList()
在一个IQueryable提供程序中,我得到了一个包含常量表达式的p.Price成员表达式,但是似乎无法从中获取值"30"。
更新:
我已经尝试过这个方法,但它似乎没有起作用。var memberExpression = (MemberExpression)GetRootConstantExpression(m);
var fi = (PropertyInfo)memberExpression.Member;
var val = fi.GetValue(((ConstantExpression)memberExpression.Expression).Value, null);
祝你好运。
Expression<Func<T>>
的无参表达式expr
(例如expr
包含表达式() => myObj
),那么一行代码object exprValue = expr.Compile()();
就可以搞定了。之后再将其转换成所需的类型。在某些情况下非常有用。 - Matt