检查Linq IQueryable是否已应用订单

c# expression-trees linq

有没有办法找出IQueryable对象是否在其表达式树中应用了OrderBy?

我的方案是网格控件启用了分页,并按列进行排序。但是默认情况下没有应用排序,所以在这种情况下,Linq to SQL对行数进行了非常大的选择,所以在所有场景中我都需要提供一个order by,但是我只应该通过主键应用默认顺序如果没有指定其他订单。

这可能吗?

一般承认的答案

您可以通过使用自定义ExpressionVisitor或您选择的任何递归遍历机制检查查询的表达式树来查找。

我觉得你的代码设计得不好。你可能应该存储这样一个事实,即订购已作为一个bool应用于某处。也许您的应用程序的信息流需要重新架构。

通过这种检查方法,您将以一种hackish方式恢复此信息。



许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow