MiCoos 哟,写bug呢?

Lambda-Set

2019-02-14
GHMicoos

概述:包括Distinct,Except,Intersect,Union

零 概述

“集合”包括Distinct,Except,Intersect,Union。包括了序列的常用集合操作。Distinct去重复。Except差集,即A-B。Intersect交集,即A∩B。Union并集,即A∪B。这几个方法都会去除序列中的重复元素。


public void Set_()
{
    var listOne = new List<int>() { 1, 1, 2, 2, 3, 3, 4, 4 };
    var listTwo = new List<int>() { 3, 3, 4, 4, 5, 5, 6, 6 };

    //1,2,3,4
    var distinct = listOne.Distinct().ToList();

    //1,2
    var except = listOne.Except(listTwo).ToList();

    //3,4
    var intersect = listOne.Intersect(listTwo).ToList();

    //1,2,3,4,5,6
    var union = listOne.Union(listTwo).ToList();
}

一 集合(Distinct,Except,Intersect,Union)

1.Distinct

  • 通过默认的(或者特定的)“相等比较器”,从序列中返回唯一的元素组成的序列(从序列中去掉重复的元素)。
  • 方法签名:

/// <summary>
/// 通过默认的“相等比较器”,从序列中返回唯一的元素组成的序列(从序列中去掉重复的元素)。
/// </summary>
/// <typeparam name="TSource">泛型类型参数</typeparam>
/// <param name="source">待移除重复的序列</param>
/// <returns>从序列中返回唯一的元素组成的序列</returns>
/// <exception cref="T:System.ArgumentNullException">source==null</exception>
IEnumerable<TSource> Distinct<TSource>(this IEnumerable<TSource> source);

/// <summary>
/// 通过特定的“相等比较器”,从序列中返回唯一的元素组成的序列(从序列中去掉重复的元素)。
/// </summary>
/// <typeparam name="TSource">泛型类型参数</typeparam>
/// <param name="source">待移除重复的序列</param>
/// <param name="comparer">特定的“相等比较器”</param>
/// <returns>从序列中返回唯一的元素组成的序列(从序列中去掉重复的元素)。</returns>
/// <exception cref="T:System.ArgumentNullException">source==null</exception>
IEnumerable<TSource> Distinct<TSource>(this IEnumerable<TSource> source, IEqualityComparer<TSource> comparer);

2.Except

  • 使用默认(或者特定的)“相等比较器”生成两个序列的差集。即就是第一个序列中,去掉第二个序列中的元素。
  • 方法签名:

/// <summary>
/// 使用默认相等比较器生成两个序列的差集。即就是第一个序列中,去掉第二个序列中的元素。
/// </summary>
/// <typeparam name="TSource">泛型类型参数</typeparam>
/// <param name="first">第一个序列</param>
/// <param name="second">第二个序列</param>
/// <returns>返回集合R=A-B;即就是第一个序列中,去掉第二个序列中的元素。</returns>
/// <exception cref="T:System.ArgumentNullException">first==null 或者 second==null</exception>
IEnumerable<TSource> Except<TSource>(this IEnumerable<TSource> first, IEnumerable<TSource> second);

/// <summary>
/// 使用特殊的相等比较器生成两个序列的差集。即就是第一个序列中,去掉第二个序列中的元素。
/// 从一个集合中删除存在于另一个集合中的所有元素,并且第一个序列中去掉重复元素。
/// </summary>
/// <typeparam name="TSource">泛型类型参数</typeparam>
/// <param name="first">第一个序列</param>
/// <param name="second">第二个序列</param>
/// <param name="comparer">相等比较器</param>
/// <returns>通过特殊相等比较器,返回集合R=A-B;即就是第一个序列中,去掉第二个序列中的元素。</returns>
/// <exception cref="T:System.ArgumentNullException">first==null 或者 second==null</exception>
IEnumerable<TSource> Except<TSource>(this IEnumerable<TSource> first, IEnumerable<TSource> second, IEqualityComparer<TSource> comparer);

3.Intersect

  • 使用默认的(或特定的)“相等比较器”生成两个序列的交集。即就是第一个序列与第二个序列都包含的元素。
  • 方法签名:

/// <summary>
/// 使用默认的相等比较器生成两个序列的交集。即就是第一个序列与第二个序列都包含的元素。
/// </summary>
/// <typeparam name="TSource">泛型类型参数</typeparam>
/// <param name="first">第一个序列</param>
/// <param name="second">第二个序列</param>
/// <returns>包含构成两个序列的集合交集的元素的序列。</returns>
/// <exception cref="T:System.ArgumentNullException">first==null 或者 second==null</exception>
IEnumerable<TSource> Intersect<TSource>(this IEnumerable<TSource> first, IEnumerable<TSource> second);

/// <summary>
/// 使用特殊的相等比较器生成两个序列的交集。即就是第一个序列与第二个序列都包含的元素。
/// </summary>
/// <typeparam name="TSource">泛型类型参数</typeparam>
/// <param name="first">第一个序列</param>
/// <param name="second">第二个序列</param>
/// <param name="comparer">相等比较器</param>
/// <returns>包含构成两个序列的集合交集的元素的序列。</returns>
/// <exception cref="T:System.ArgumentNullException">first==null 或者 second==null</exception>
IEnumerable<TSource> Intersect<TSource>(this IEnumerable<TSource> first, IEnumerable<TSource> second, IEqualityComparer<TSource> comparer);

4.Union

  • 使用默认的(或特定的)“相等比较器”生成两个序列的并集。即就是组合两个集合并删除重复的元素。
  • 方法签名:

/// <summary>
/// 使用默认的相等比较器生成两个序列的集合并集。即就是组合两个集合并删除重复的元素。
/// </summary>
/// <typeparam name="TSource">序列的元素类型</typeparam>
/// <param name="first">第一个序列</param>
/// <param name="second">第二个序列</param>
/// <returns>包含来自两个序列的元素,不包括重复项。</returns>
/// <exception cref="T:System.ArgumentNullException">first==null or second==null</exception>
IEnumerable<TSource> Union<TSource>(this IEnumerable<TSource> first, IEnumerable<TSource> second);

/// <summary>
/// 使用“特定的相等比较器”生成两个序列的集合并集。即就是组合两个集合并删除重复的元素。
/// </summary>
/// <typeparam name="TSource">序列的元素类型</typeparam>
/// <param name="first">第一个序列</param>
/// <param name="second">第二个序列</param>
/// <param name="comparer"></param>
/// <returns>包含来自两个序列的元素,不包括重复项。</returns>
/// <exception cref="T:System.ArgumentNullException">first==null or second==null</exception>
IEnumerable<TSource> Union<TSource>(this IEnumerable<TSource> first, IEnumerable<TSource> second, IEqualityComparer<TSource> comparer);


上一篇 Lambda-Restriction

Comments

Content