我如何判断一个IQueryable是IOrderedQueryable? [英] How can I tell if an IQueryable is an IOrderedQueryable?
问题描述
我有一个IQueryable。我没有它被称为排序依据,或以其他方式做任何事的。
如果我做的:
//由于某种原因,isItOrdered始终是真实的
VAR isItOrdered = myQueryable是IOrderedQueryable< T>
这是为什么总是如此? (现在看来似乎不应该。),更重要的是,我怎么能告诉我们,如果一个IQueryable已经已经下令? (即是真正的IOrderedQueryable)
我希望能够做一些事情,如:
如果(myQueryable是IOrderedQueryable< T>)
myQueryable = myQueryable.ThenBy(...);
,否则
myQueryable = myQueryable.OrderBy(...);
您还没有表现出什么创建可查询开始有,但也许它是自然以某种方式订购?
你有什么的确实的检查它是否是一个真正的 IOrderedQueryable< T>
- 我怀疑这只是你的查询提供的总是的提供了一个有序的可查询,即使订单不明显
编辑:好的,别的东西,你可以尝试:
如果(typeof运算(IOrderedQueryable< T> ).IsAssignableFrom(myQueryable.Expression.Type))
...或一般,打印出 myQueryable.Expression.Type
,看看它是什么样子。
I have an IQueryable. I have not called OrderBy on it or otherwise done anything with it.
If I do:
// for some reason, isItOrdered is always true
var isItOrdered = myQueryable is IOrderedQueryable<T>
Why is this always true? (It seems like it shouldn't be.) And, more importantly, how can I tell if an IQueryable already has been ordered? (i.e. is truly an IOrderedQueryable)
I would like to be able to do something like:
if (myQueryable is IOrderedQueryable<T>)
myQueryable = myQueryable.ThenBy(...);
else
myQueryable = myQueryable.OrderBy(...);
You haven't shown what's creating your queryable to start with, but perhaps it's naturally ordered in some way?
What you've got does check whether it's really an IOrderedQueryable<T>
- I suspect that it's just that your query provider always provides an ordered queryable, even if the order isn't obvious.
EDIT: Okay, something else you might try:
if (typeof(IOrderedQueryable<T>).IsAssignableFrom(myQueryable.Expression.Type))
... or in general, print out myQueryable.Expression.Type
and see what it looks like.
这篇关于我如何判断一个IQueryable是IOrderedQueryable?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!