我如何判断一个IQueryable是IOrderedQueryable? [英] How can I tell if an IQueryable is an IOrderedQueryable?

查看:1286
本文介绍了我如何判断一个IQueryable是IOrderedQueryable?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个IQueryable。我没有它被称为排序依据,或以其他方式做任何事的。



如果我做的:

  //由于某种原因,isItOrdered始终是真实的
VAR isItOrdered = myQueryable是IOrderedQueryable< T>



这是为什么总是如此? (现在看来似乎不应该。),更重要的是,我怎么能告诉我们,如果一个IQueryable已经已经下令? (即是真正的IOrderedQueryable)



我希望能够做一些事情,如:

 如果(myQueryable是IOrderedQueryable< T>)
myQueryable = myQueryable.ThenBy(...);
,否则
myQueryable = myQueryable.OrderBy(...);


解决方案

您还没有表现出什么创建可查询开始有,但也许它是自然以某种方式订购?



你有什么的确实的检查它是否是一个真正的 IOrderedQueryable< T> - 我怀疑这只是你的查询提供的总是的提供了一个有序的可查询,即使订单不明显

$ b $。 b

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

 如果(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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆