有没有办法知道一个IQueryable<T>
已订购(使用 OrderBy
或 OrderbyDescending
)?
所以我知道是否要调用OrderBy
或 ThenBy
关于收藏。
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/