我有一个通用方法,我使用IQueryable<T>
并使用Linq-to-Entities返回IOrderedQuerable<T>
。
简单的input.OrderBy(p => p.something)
将不起作用,因为我不知道T
的任何属性(我不能将其约束到接口)。
将结果转换为(IOrderedQuerable<T>
)似乎有效,直到您尝试将其与.Skip()
或.Take()
实际使用,此时您会收到运行时错误。
我想我理论上可以使用反射,看看我是否找到int
或者其他东西并构建一个用作排序的表达式,但这看起来很脏。
有什么想法吗?
答案 0 :(得分:14)
input.OrderBy(p => 0);
通过这种方式,您可以按照最初的顺序排列项目。但是,这将花费额外的CPU。