我有一个IQueryable.我没有在它上面调用OrderBy或者用它做任何事情.
如果我做:
// for some reason, isItOrdered is always true
var isItOrdered = myQueryable is IOrderedQueryable<T>
Run Code Online (Sandbox Code Playgroud)
为什么这总是如此?(好像不应该这样.)更重要的是,如何判断IQueryable是否已被订购?(即真正的IOrderedQueryable)
我希望能够做到这样的事情:
if (myQueryable is IOrderedQueryable<T>)
myQueryable = myQueryable.ThenBy(...);
else
myQueryable = myQueryable.OrderBy(...);
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 14
你还没有展示创建你的可查询的内容,但也许它以某种方式自然地排序?
您所拥有的功能确定它是否真的是IOrderedQueryable<T>- 我怀疑只是您的查询提供程序始终提供有序的可查询,即使订单不明显.
编辑:好的,你可能会尝试其他的东西:
if (typeof(IOrderedQueryable<T>).IsAssignableFrom(myQueryable.Expression.Type))
Run Code Online (Sandbox Code Playgroud)
......或者一般来说,打印出来myQueryable.Expression.Type看看它的样子.
这似乎有效
if (query.Expression.Type == typeof(IOrderedQueryable<T>))
myQueryable = myQueryable.ThenBy(...);
else
myQueryable = myQueryable.OrderBy(...);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2514 次 |
| 最近记录: |