类型“ Queryable”上的通用方法“ OrderBy”与提供的类型参数不兼容

米歇尔·科尼耶(Michiel Cornille)

我正在编写一些将修改表达式的代码,以使其中包含的子查询得到排序。

在SO上找到了类似的代码,但是对我来说不起作用。我也尝试着看这个答案,但是无法将其应用到我的代码中

类型为“可查询”的通用方法“ 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>>

我不知道如何诊断四个参数中的哪个不正确。我认为其中一种表达类型可能不正确。

米歇尔·科尼耶(Michiel Cornille)

我的类型定义是错误的,如错误提示所示。

typeof(TSource)必须是typeof(TNav),因为我们是排序source.Gifts

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章