如果我在发布/订阅体系结构中有一个消息列表,我认为在底层列表上使用IEnumerable.Where来检索特定消息并信任消息的顺序是合理的吗?
Ste*_*ven 23
该Enumerable.Where扩展方法,但Queryable.Where扩展方法的习惯.
Enumerable.Where 必须保留顺序,因为它流式传输结果并且没有缓存(缓存结果中没有逻辑).
Queryable.Where另一方面,将给定的查询转换为基础数据源将理解的内容,并且无法保证所需的顺序.使用关系数据库时,可以轻松地观察到这种效果.添加一个where子句可以让数据库选择另一个索引,这可以改变结果的顺序.
对于Linq to Objects/IEnumerable这是真的 - 订单将被维护 - 对于IQueryable依赖于提供商的提供商,许多提供商不维护订单.
看起来这个事实(维护顺序)没有记录在MSDN上,所以我认为它是一个实现细节 - 尽管不太可能 - 将来可能会改变.
| 归档时间: |
|
| 查看次数: |
2187 次 |
| 最近记录: |