(код ниже был обновлен и работает должным образом)InvalidOperationException: Нет метод "Где от типа«System.Linq.Queryable»совместим с указанными аргументами
Существует динамическая выборка OrderBy из LINQPad. Я хочу просто просто применить «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“ совместим с указанными аргументами.»
Любая помощь с оценкой.
Приветствия
Привет, Джон, спасибо за ваш ответ. Выражаемое вами выражение жалуется «Бинарный оператор GreaterThan не определен для типов« System.Decimal »и« System.Int32 ».» – Zalan
Ах. Вы не дали понять, что «Цена» является десятичной. Я подозреваю, что самое простое решение - изменить 100-100 м. –