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

问题描述 投票:5回答:1

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

我在SO上找到了类似的代码:https://stackoverflow.com/a/1379693/509464但这对我没有用我也尝试查看this答案,但无法将其应用于我的代码段

类型为'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是实体类型(礼物)
  • navigationalProperty.Body包含{source.Gifts.AsQueryable()},其表达式类型为:System.Linq.Expressions.MethodCallExpression
  • filterpart.OrderOverPropertyGetter包含表达式类型为{g => g.Date}System.Linq.Expressions.Expression<System.Func<Gift,System.DateTime>>

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

c# entity-framework-4 lambda expression
1个回答
1
投票

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

[typeof(TSource)必须为typeof(TNav),因为我们要订购source.Gifts

© www.soinside.com 2019 - 2024. All rights reserved.