【发布时间】:2013-07-13 02:15:54
【问题描述】:
在 C# 中,是否会使用 Select() 来投影 IOrderedEnumerable 保留元素顺序的元素?
- 如果是这样,为什么它返回一个
IEnumerable,而不是一个IOrderedEnumerable? - 如果没有,我该如何实现(除了使用
foreach)?
请注意,这个问题不是 this one 的重复问题 - 我只有一个 Select() 子句,没有 Distinct()。
编辑
是的,它是 LINQ to Objects。 顺便说一句,如果我实际上是在查询一些 SQL DB,答案会有什么不同吗?
【问题讨论】:
-
可能。虽然我不使用
select,但我经常通过首先对结果进行排序然后调用Skip和Take来获取与当前页面相关的这些结果的子集来进行结果分页。订单始终得到可靠维护,因此我希望它在Select期间也能正常工作...只需测试一下即可 -
是LINQ to Objects吗?
-
在这篇文章stackoverflow.com/questions/8518557/…中有更多关于何时使用
IOrderedEnumerable(以及它的用途,主要是应用二级排序标准)的详细信息 -
Select() 不会更改项目的顺序,但编译器无法知道序列是否仍然是有序的。例如:
new int[]{1,3,2}.Select(x => randomInstance.Next())
标签: c# ienumerable iorderedenumerable