LINQ 操作符详解:有序类型、全序列操作、聚合与分组
1. 有序类型
有序类型,如 IOrderedEnumerable<T> ,也为 IEnumerable<T> 定义。虽然 IEnumerable<T> 不保证特定顺序,但它总是按某种顺序产生元素,因为提取元素的方式是逐个进行。而且, IOrderedEnumerable<T> 在 LINQ 之外未广泛实现,很多非 LINQ 感知的对象虽按已知顺序产生元素,但仅实现了 IEnumerable<T> 。此外, IQueryable<T> 也支持相关操作,这与许多数据库即使在无序查询中也支持 TOP (大致相当于 Take )操作一致。不过,个别提供程序可能不支持某些操作,在无法合理解释操作符的场景中会抛出异常。
2. 全序列、保持顺序的操作
LINQ 定义了一些操作符,其输出包含源中的每个元素,并能保持或反转顺序。并非所有集合都有顺序,所以这些操作符并非总是受支持,但 LINQ to Objects 支持所有这些操作:
- Concat :组合两个序列,先输出第一个序列的所有元素(按其返回顺序),再输出第二个序列的所有元素(保持顺序)。
- DefaultIfEmpty :返回源中的所有元素。若源为空,则返回单个元素。若未
超级会员免费看
订阅专栏 解锁全文
307

被折叠的 条评论
为什么被折叠?



