c# - 确定 IQueryable<T> 是否已订购

标签 c# sql-order-by iqueryable

有没有办法知道一个IQueryable<T>已订购(使用 OrderByOrderbyDescending )?

所以我知道是否要调用OrderByThenBy关于收藏。

IQueryable<Contact> contacts = Database.GetContacts();

我试过了 contacts is IOrderedQueryable<Contact> , 但它总是正确的。

编辑:我只是改变了我的例子,之前的例子并没有真正表达我的观点。假设GetContacts使用 Entity Framework 并简单地返回一个表的所有记录。

稍后,我将几个函数应用于 contacts ,我不知道这些功能的作用。他们可以对 IQueryable<Contact> 进行排序或过滤.

当我取回集合时,我需要再次对它进行排序。为此,我需要知道是否需要调用 OrderBy , 或 ThenBy .因此,如果已经排序,我不会重新排序整个集合。

最佳答案

这是可能的。这是一个扩展方法:

public static bool IsOrdered<T>(this IQueryable<T> queryable)
{
    if (queryable == null)
    {
        throw new ArgumentNullException(nameof(queryable));
    }

    return queryable.Expression.Type == typeof(IOrderedQueryable<T>);
}

关于c# - 确定 IQueryable<T> 是否已订购,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8507746/

相关文章:

sql - 在 SQL Server 中组合 ORDER BY 和 UNION

node.js - ORDER BY Sequelize nodeJS

c# - 我应该在界面中指定 IQueryable 而不是 List 吗?

c# - IQueryable OfType<T> 其中 T 是运行时类型

c# - 列表查询比 IQueryable 快 20 倍?

c# - 当 IDENTITY_INSERT 设置为 OFF 时,无法在 TABLE 中插入标识列的显式值; .NET核心2.1

c# - C# 中的简单 LINQ 问题

c# - 在 MVVM Light 中访问其他 ViewModel 中的属性

c# - WPF 上下文菜单 = {x :Null} but still shows menu inside ContentControl

mysql - 如何按赞排序?