我想创建一个自定义IQueryable
提供商。
我的IQueryable
实现是否保留了源元素的顺序?
例如,(new [] { 1, 2, 3 }).AsMyQueriable().Select(x => x).ToArray()
可以返回3, 2, 1
吗?
答案 0 :(得分:1)
从技术上讲,您的查询可以做任何感觉。由于IQueryable
是一个接口,因此没有构造函数,所以在这方面你不必遵循任何契约 - 可查询只是可以通过某些特定方法查询的东西,它的开始状态不是作为接口合同的一部分。但是,扩展方法的文档应该清楚地指出返回的IQueryable
对象是否保留输入序列的顺序。
当然,如果有人在您的可查询实例上调用.OrderBy()
,则可能会相应地重新排序元素。但是,如果开发人员没有调用.OrderBy()
,那么您可以按照您想要的顺序自由返回元素。
答案 1 :(得分:1)
没有
如果使用您的提供商的任何人需要按特定顺序访问这些元素,则可以使用IQueryable.OrderBy
代替。