c# - 通过应用检查 Linq IQueryable 是否有订单

标签 c# linq expression-trees

有什么方法可以查明 IQueryable 对象是否在其表达式树中应用了 OrderBy?

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

这可能吗?

最佳答案

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

我感觉你的代码设计得不好。您可能应该将排序已在某处应用的事实存储为 bool。也许您的应用程序的信息流需要重新架构。

通过这种检查方法,您将以一种骇人听闻的方式恢复此信息。

关于c# - 通过应用检查 Linq IQueryable 是否有订单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17697343/

相关文章:

C#使用linq查找字符串的最大值

c# - Moq 设置不适用于方法调用后跟隐式转换

c# - 表达式访问者仅为某些 lambda 表达式调用 VisitParameter

c# - 查询数据集中的 2 个数据表

c# - 无法从程序文件文件夹运行 ps1 脚本

javascript - 在 Angular 中将对象数组传递给 POST

linq 子查询返回空值

c# - 将对象添加到 BindingList 中的 BindingList

c# - 强制 Expression<> 评估局部变量

c# - 如何判断文件夹是否打开?