我在有序数组上使用LINQ to Objects指令。
我不应该执行哪些操作来确保数组的顺序没有更改
我检查了System.Linq.Enumerable的方法,丢弃了任何返回非IEnumerable结果的方法。我检查了每个人的评论,以确定结果的顺序与来源的顺序有何不同
绝对保持秩序。可以按索引将源元素映射到结果元素
- 可计算
- 铸造
- 海螺
- 挑选
- 托雷
- 托利斯特
维持秩序。元素被过滤或添加,但不会重新排序
- 明显的
- 除了
- 相交
- 类型
- 前置(在.net 4.7.1中新增)
- 跳过
- 滑雪爱好者
- 接受
- 花时间
- 在哪里
- Zip(在.NET4中新增)
破坏秩序-我们不知道预期的结果是什么
- 托迪科
- 托卢库普
显式重新定义顺序-使用这些更改结果的顺序
- 订货人
- OrderByDescending
- 逆转
- 然后
- 然后下降
根据一些规则重新定义顺序
- GroupBy—根据源中生成每个iGroup的第一个键的元素的顺序生成iGroup对象。分组中的元素是按照它们在源代码中出现的顺序生成的
- GroupJoin-GroupJoin保留外部元素的顺序,对于外部元素的每个元素,保留内部匹配元素的顺序
- Join-保留外部元素的顺序,对于这些元素中的每个元素,保留内部匹配元素的顺序
- SelectMany-对于源的每个元素,将调用选择器并返回一系列值
- Union—枚举此方法返回的对象时,Union按顺序枚举第一个和第二个对象,并生成尚未生成的每个元素
编辑:基于这个实现,我已经转移到保持顺序
私有静态IEnumerable<;t来源>;识别器<;t来源>;
(IEnumerable<;TSource>;源、IEqualityComparer<;TSource>;比较器)
{
Set<;TSource>;Set=新Set<;TSource>;(比较器);
foreach(源中的TSource元素)
if(set.Add(element))收益返回元素;
}