有IQueryable提供商来保存订单吗?

时间:2013-02-18 17:33:31

标签: c# linq iqueryable

我想创建一个自定义IQueryable提供商。

我的IQueryable实现是否保留了源元素的顺序?

例如,(new [] { 1, 2, 3 }).AsMyQueriable().Select(x => x).ToArray()可以返回3, 2, 1吗?

2 个答案:

答案 0 :(得分:1)

从技术上讲,您的查询可以做任何感觉。由于IQueryable是一个接口,因此没有构造函数,所以在这方面你不必遵循任何契约 - 可查询只是可以通过某些特定方法查询的东西,它的开始状态不是作为接口合同的一部分。但是,扩展方法的文档应该清楚地指出返回的IQueryable对象是否保留输入序列的顺序。

当然,如果有人在您的可查询实例上调用.OrderBy(),则可能会相应地重新排序元素。但是,如果开发人员没有调用.OrderBy(),那么您可以按照您想要的顺序自由返回元素。

答案 1 :(得分:1)

没有

如果使用您的提供商的任何人需要按特定顺序访问这些元素,则可以使用IQueryable.OrderBy代替。