通常将IOueryable转换为IOrderedQueryable

时间:2013-01-25 15:00:50

标签: c# entity-framework linq-to-entities

我有一个通用方法,我使用IQueryable<T>并使用Linq-to-Entities返回IOrderedQuerable<T>

简单的input.OrderBy(p => p.something)将不起作用,因为我不知道T的任何属性(我不能将其约束到接口)。

将结果转换为(IOrderedQuerable<T>)似乎有效,直到您尝试将其与.Skip().Take()实际使用,此时您会收到运行时错误。

我想我理论上可以使用反射,看看我是否找到int或者其他东西并构建一个用作排序的表达式,但这看起来很脏。

有什么想法吗?

1 个答案:

答案 0 :(得分:14)

input.OrderBy(p => 0);

通过这种方式,您可以按照最初的顺序排列项目。但是,这将花费额外的CPU。