【发布时间】:2010-08-06 11:21:19
【问题描述】:
(以下代码已更新并正常运行)
有来自 LinqPad 的动态 OrderBy 示例。我想要做的只是简单地为这个样本应用“Where”而不是“OrderBy”。这是我的代码:
IQueryable query =
from p in Purchases
//where p.Price > 100
select p;
string propToWhere = "Price";
ParameterExpression purchaseParam = Expression.Parameter (typeof (Purchase), "p");
MemberExpression member = Expression.PropertyOrField (purchaseParam, propToWhere);
Expression<Func<Purchase, bool>> lambda = p => p.Price < 100;
lambda.ToString().Dump ("lambda.ToString");
//Type[] exprArgTypes = { query.ElementType, lambda.Body.Type };
Type[] exprArgTypes = { query.ElementType };
MethodCallExpression methodCall =
Expression.Call (typeof (Queryable), "Where", exprArgTypes, query.Expression, lambda);
IQueryable q = query.Provider.CreateQuery (methodCall);
q.Dump();
q.Expression.ToString().Dump("q.Expression");
此代码出现异常: “InvalidOperationException:‘System.Linq.Queryable’类型上的‘Where’方法没有与提供的参数兼容。”
任何帮助都会被评估。
干杯
【问题讨论】: