C# · 12月 29, 2021

c# – 如何判断IQueryable是否为IOrderedQueryable?

我有一个IQueryable.我没有打电话给OrderBy或以其他方式做任何事情.

如果我做:

// for some reason,isItOrdered is always truevar isItOrdered = myQueryable is IOrderedQueryable<T>

为什么这是真的? (似乎不应该是.)而且,更重要的是,如何判断是否已经订购了IQueryable? (即真正是一个IOrderedQueryable)

我想要做一些像:

if (myQueryable is IOrderedQueryable<T>) myQueryable = myQueryable.ThenBy(…);else myQueryable = myQueryable.OrderBy(…);解决方法 你没有显示什么是创建你可查询的开始,但也许它是以某种方式自然排序?

你有什么检查是否真的是一个IOrderedQueryable< T> – 我怀疑这只是你的查询提供者总是提供有序可查询的,即使顺序不明显.

编辑:好的,别的东西你可以尝试:

if (typeof(IOrderedQueryable<T>).IsAssignableFrom(myQueryable.Expression.Type))

…或者一般来说,打印出myQueryable.Expression.Type,看看它的样子.