我正在编写一些代码来修改表达式,以便对其中包含的子查询进行排序。
我在 SO 上找到了类似的代码,但它对我不起作用。我也尝试查看此答案,但无法将其应用于我的代码
'Queryable' 类型上的通用方法 'OrderBy' 与提供的类型参数和参数不兼容。如果方法是非泛型的,则不应提供类型参数。
MethodCallExpression orderByCallExpression = Expression.Call(
typeof(Queryable),
"OrderBy"/*Descending*/,
new Type[] { typeof(TSource), filterpart.OrderOverPropertyGetterValueType },
navigationalProperty.Body,
filterpart.OrderOverPropertyGetter);
我试图找出 2 个类型参数或 2 个其他参数中的哪一个导致此错误。
OrderOverPropertyGetterValueType
只是typeof(DateTime)
在这种情况下TSource
是一个实体类型 (Gifts
)navigationalProperty.Body
包含source.Gifts.AsQueryable()
具有表达式类型的 { }:System.Linq.Expressions.MethodCallExpression
filterpart.OrderOverPropertyGetter
包含{g => g.Date}
表达式类型System.Linq.Expressions.Expression<System.Func<Gift,System.DateTime>>
我不知道如何诊断四个参数中的哪个参数不正确。我在想其中一种表达式类型可能不正确。