我在有序数组上使用LINQ to Objects指令。我不应该执行哪些操作来确保数组的顺序不变?
我检查了System.Linq.Enumerable的方法,丢弃了所有返回非IEnumerable结果的方法。我检查了每个注释,以确定结果的顺序与源顺序之间的差异。
绝对保留订单。您可以按索引将源元素映射到结果元素
保留订单。元素被过滤或添加,但不重新排序。
销毁订单-我们不知道期望的订单顺序。
明确地重新定义订单-使用这些来更改结果的顺序
根据一些规则重新定义订单。
编辑:基于此实现,我已将Distinct移至Preserving order 。
private static IEnumerable<TSource> DistinctIterator<TSource> (IEnumerable<TSource> source, IEqualityComparer<TSource> comparer) { Set<TSource> set = new Set<TSource>(comparer); foreach (TSource element in source) if (set.Add(element)) yield return element; }