MiCoos 哟,写bug呢?

Lambda-Orderby

2019-02-14
GHMicoos

概述:包括OrderBy,OrderByDescending,ThenBy,ThenByDescendingReverse

零 概述

“排序”表示对集合进行排序。它包括OrderBy,OrderByDescending,ThenBy,ThenByDescendingReverse。使用容易,看方法注释,不在赘述。

一 排序

1.方法签名


//不难看出OrderBy的方法重载是两两分组的,后一个只比前一个多一个comparer。

/// <summary>
/// 根据键将序列中的元素按升序排序。
/// </summary>
/// <typeparam name="TSource">泛型类型参数</typeparam>
/// <typeparam name="TKey">键选择器返回的键的类型。</typeparam>
/// <param name="source">待处理的序列</param>
/// <param name="keySelector">从元素中提取键的函数。</param>
/// <returns>IOrderedEnumerable<TSource>的元素是根据键排序的。</returns>
/// <exception cref="T:System.ArgumentNullException">source or keySelector is null.</exception>
IOrderedEnumerable<TSource> OrderBy<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector);

/// <summary>
/// 使用指定的比较器按升序对序列中的元素进行排序。
/// </summary>
/// <typeparam name="TSource">泛型类型参数</typeparam>
/// <typeparam name="TKey">键选择器返回的键的类型</typeparam>
/// <param name="source">待处理的序列</param>
/// <param name="keySelector">从元素中提取键的函数。</param>
/// <param name="comparer">键比较函数。</param>
/// <returns>IOrderedEnumerable<TSource>的元素是根据键排序的。</returns>
/// <exception cref="T:System.ArgumentNullException">source or keySelector is null.</exception>
IOrderedEnumerable<TSource> OrderBy<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector, IComparer<TKey> comparer);

/// <summary>
/// 根据键将序列中的元素按降序排序。
/// </summary>
/// <typeparam name="TSource">泛型类型参数</typeparam>
/// <typeparam name="TKey">键选择器返回的键的类型</typeparam>
/// <param name="source">待处理的序列</param>
/// <param name="keySelector">从元素中提取键的函数</param>
/// <returns>IOrderedEnumerable<TSource>的元素是根据键排序的。</returns>
/// <exception cref="T:System.ArgumentNullException">source or keySelector is null.</exception>
IOrderedEnumerable<TSource> OrderByDescending<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector);

/// <summary>
/// 使用指定的比较器按降序对序列中的元素进行排序。
/// </summary>
/// <typeparam name="TSource">泛型类型参数</typeparam>
/// <typeparam name="TKey">键选择器返回的键的类型</typeparam>
/// <param name="source">待处理的序列</param>
/// <param name="keySelector">从元素中提取键的函数</param>
/// <param name="comparer">键比较函数</param>
/// <returns>IOrderedEnumerable<TSource>的元素是根据键排序的。</returns>
/// <exception cref="T:System.ArgumentNullException">source or keySelector is null.</exception>
IOrderedEnumerable<TSource> OrderByDescending<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector, IComparer<TKey> comparer);

/// <summary>
/// 根据键按升序对序列中的元素执行后续排序。(也是升序)
/// </summary>
/// <typeparam name="TSource">泛型类型参数</typeparam>
/// <typeparam name="TKey">键选择器返回的键的类型</typeparam>
/// <param name="source">待处理的序列</param>
/// <param name="keySelector">从元素中提取键的函数</param>
/// <returns>IOrderedEnumerable<TSource>的元素是根据键排序的。</returns>
/// <exception cref="T:System.ArgumentNullException">source or keySelector is null.</exception>
IOrderedEnumerable<TSource> ThenBy<TSource, TKey>(this IOrderedEnumerable<TSource> source, Func<TSource, TKey> keySelector);

/// <summary>
/// 使用指定的比较器按升序对序列中的元素执行后续排序。(也是升序)
/// </summary>
/// <typeparam name="TSource">泛型类型参数</typeparam>
/// <typeparam name="TKey">键选择器返回的键的类型</typeparam>
/// <param name="source">待处理的序列</param>
/// <param name="keySelector">从元素中提取键的函数</param>
/// <param name="comparer">键比较函数</param>
/// <returns>IOrderedEnumerable<TSource>的元素是根据键排序的。</returns>
/// <exception cref="T:System.ArgumentNullException">source or keySelector is null.</exception>
IOrderedEnumerable<TSource> ThenBy<TSource, TKey>(this IOrderedEnumerable<TSource> source, Func<TSource, TKey> keySelector, IComparer<TKey> comparer);

/// <summary>
/// 根据键按降序对序列中的元素执行后续排序。(也是降序)
/// </summary>
/// <typeparam name="TSource">泛型类型参数</typeparam>
/// <typeparam name="TKey">键选择器返回的键的类型</typeparam>
/// <param name="source">待处理的序列</param>
/// <param name="keySelector">从元素中提取键的函数</param>
/// <returns>IOrderedEnumerable<TSource>的元素是根据键排序的。</returns>
/// <exception cref="T:System.ArgumentNullException">source or keySelector is null.</exception>
IOrderedEnumerable<TSource> ThenByDescending<TSource, TKey>(this IOrderedEnumerable<TSource> source, Func<TSource, TKey> keySelector);

/// <summary>
/// 使用指定的比较器按降序对序列中的元素执行后续排序。(也是降序)
/// </summary>
/// <typeparam name="TSource">泛型类型参数</typeparam>
/// <typeparam name="TKey">键选择器返回的键的类型</typeparam>
/// <param name="source">待处理的序列</param>
/// <param name="keySelector">从元素中提取键的函数</param>
/// <param name="comparer">键比较函数</param>
/// <returns>IOrderedEnumerable<TSource>的元素是根据键排序的。</returns>
/// <exception cref="T:System.ArgumentNullException">source or keySelector is null.</exception>
IOrderedEnumerable<TSource> ThenByDescending<TSource, TKey>(this IOrderedEnumerable<TSource> source, Func<TSource, TKey> keySelector, IComparer<TKey> comparer);

/// <summary>
/// 反转序列中元素的顺序。
/// </summary>
/// <typeparam name="TSource">泛型类型参数</typeparam>
/// <param name="source">待处理的序列</param>
/// <returns>一个序列,其元素与输入序列的元素以相反的顺序对应。</returns>
/// <exception cref="T:System.ArgumentNullException">source is null.</exception>
IEnumerable<TSource> Reverse<TSource>(this IEnumerable<TSource> source);



上一篇 Lambda-Join

下一篇 Lambda-Other

Comments

Content