InvalidOperationException: ningún método 'Where' en el tipo 'System.Linq.Queryable' es compatible con los argumentos proporcionados

(El siguiente código ha sido actualizado y funcionó correctamente)

Hay una muestra dinámica de OrderBy de LinqPad. Lo que quiero hacer es simplemente aplicar 'Where' en lugar de 'OrderBy' para esta muestra. Aquí está mi código:

    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");

Este código obtiene una excepción: "InvalidOperationException: ningún método 'Where' en el tipo 'System.Linq.Queryable' es compatible con los argumentos proporcionados".

Cualquier ayuda es apreciada.

Salud

Respuestas a la pregunta(2)

Su respuesta a la pregunta