C# 无法将类型IQueryable隐式转换为IOrderedQueryable

C# 无法将类型IQueryable隐式转换为IOrderedQueryable,c#,entity-framework,linq,C#,Entity Framework,Linq,当log.AsQueryable()尝试从IOrderedQueryable转换为IQueryable时,分页时出现错误 无法将类型IQueryable隐式转换为IOrderedQueryable 有人知道我可以用另一种方法来实现这一点吗?我认为这里的问题是分页()返回IQueryable,但您将结果分配回log,它是IOrderedQueryable(因为条件操作的两部分都是有序的)。幸运的是,看起来您没有使用已订购的部件,因此您可以第一次将logom更改为显式的IQueryable,而不是v

当log.AsQueryable()尝试从IOrderedQueryable转换为IQueryable时,分页时出现错误

无法将类型IQueryable隐式转换为IOrderedQueryable


有人知道我可以用另一种方法来实现这一点吗?

我认为这里的问题是
分页()
返回
IQueryable
,但您将结果分配回
log
,它是
IOrderedQueryable
(因为条件操作的两部分都是有序的)。幸运的是,看起来您没有使用已订购的部件,因此您可以第一次将
log
om更改为显式的
IQueryable
,而不是
var
(正在拾取
IOrderedQueryable
):


我认为这里的问题是
Pagination()
返回
IQueryable
,但您将结果分配回
log
,它是
IOrderedQueryable
(因为条件操作的两个部分都是有序的)。幸运的是,看起来您没有使用已订购的部件,因此您可以第一次将
log
om更改为显式的
IQueryable
,而不是
var
(正在拾取
IOrderedQueryable
):


你能发布准确的错误消息吗?我怀疑它包含类型参数。这也将是很好的,显示准确的位置,而不是仅仅“在这里”。你能张贴准确的错误消息吗?我怀疑它包含类型参数。最好能准确地显示位置,而不仅仅是“这里”;你错了。
IOrderedQueryable继承自IQueryable
这一事实与
log
的两个赋值无关。如果问题是您所猜测的,则不会产生所述的错误消息。如果错误是,
IQueryable
无法转换为
IOrderedQueryable
,那么错误就是这样说的;它说的正好相反。@Servy是的,因为这不是复制/粘贴错误消息,所以我假设在重新键入时存在人为错误的范围;我在这里发布的内容将与所显示的代码完全一致,并且会有一个非常类似的错误消息,这就是重点。事实上,在所示的代码中,这是唯一可能引发类似错误的地方,
AsQueryable()
排除了参数的使用,条件的两边都会有相同的结果(至少假设标准LINQ运算符),如果您做出不同的假设,则可能会出现其他任何问题。你应该知道,当一个不清楚的问题被发布时,不要只是猜测OP的实际情况,而不是努力澄清问题,以便得到客观正确的答案。@Servy谢谢你的讲座,但我对我在这种情况下的推断感到满意,我支持我的答案;有时,你无法在没有澄清的情况下理智地解读一个问题,但我强烈怀疑在这种情况下:我们can@Servy请再读一遍;你错了。
IOrderedQueryable继承自IQueryable
这一事实与
log
的两个赋值无关。如果问题是您所猜测的,则不会产生所述的错误消息。如果错误是,
IQueryable
无法转换为
IOrderedQueryable
,那么错误就是这样说的;它说的正好相反。@Servy是的,因为这不是复制/粘贴错误消息,所以我假设在重新键入时存在人为错误的范围;我在这里发布的内容将与所显示的代码完全一致,并且会有一个非常类似的错误消息,这就是重点。事实上,在所示的代码中,这是唯一可能引发类似错误的地方,
AsQueryable()
排除了参数的使用,条件的两边都会有相同的结果(至少假设标准LINQ运算符),如果您做出不同的假设,则可能会出现其他任何问题。你应该知道,当一个不清楚的问题被发布时,不要只是猜测OP的实际情况,而不是努力澄清问题,以便得到客观正确的答案。@Servy谢谢你的讲座,但我对我在这种情况下的推断感到满意,我支持我的答案;有时候,你无法在没有澄清的情况下理智地解读一个问题,但我强烈怀疑,在这种情况下:我们可以
var log = string.IsNullOrEmpty(filter?.search) 
 ? _appLog.Get().OrderByDescending(x => x.Date)
 : _appLog.Get().Where(p => p.ProcessName == filter.Search).OrderByDescending(x => x.Date);

log = Pagination(log.AsQueryable(), filter, "Date", "LogList");
IQueryable<whatever> log = ...
var query = ...
var log = Pagination(query, filter, "Date", "LogList");