zoukankan      html  css  js  c++  java
  • C# 对List取交集、差集以及并集

    List<T>以string类型为例,实际应用中可换做其他类型:

    1:取交集

     // 取交集
            static void Intersection()
            {
                List<string> list1 = new List<string> { "AA", "BB", "CC", "EE", "GG" };
                List<string> list2 = new List<string> { "BB", "DD", "GG", "MM" };
                List<string> list3 = new List<string>();
                list3 = list1.Intersect(list2).ToList();
     
                Console.Write(list3.Count);  //交集的个数,如果个数为0,说明没有交集
                Console.WriteLine();
                foreach (var s in list3)      // 各个值
                {
                    Console.Write(s);
                    Console.WriteLine();
                }
            }

    结果:

    BB

    GG

    2:取差集

     // 取差集
            static void Exception()
            {
                List<string> list1 = new List<string> { "AA", "BB", "CC", "EE", "GG" };
                List<string> list2 = new List<string> { "BB", "DD", "GG", "MM" };
                List<string> list3 = new List<string>();
                list3 = list1.Except(list2).ToList();
     
                Console.Write(list3.Count);  //差集的个数,如果个数为0,说明list1中存在的值也全都存在于list2中
                Console.WriteLine();
                foreach (var s in list3)      // 各个值
                {
                    Console.Write(s);
                    Console.WriteLine();
                }
            }

    结果:

    AA

    CC

    EE

    如果把取差集代码中的
     list3 = list1.Except(list2).ToList();
    换成
     list3 = list2.Except(list1).ToList();

    结果如下:

    DD

    MM

    listA.Except(B).ToList();

    注:差集表示listA中哪些值是listB中所不存在的;

    3:取并集

    // 取并集
            static void Union()
            {
                List<string> list1 = new List<string> { "AA", "BB", "CC", "EE", "GG" };
                List<string> list2 = new List<string> { "BB", "DD", "GG", "MM" };
                List<string> list3 = new List<string>();
                list3 = list1.Union(list2).ToList();
     
                Console.Write(list3.Count);  //并集的个数,一般不会为0,除非list1和list2中的元素个数都为0
                Console.WriteLine();
                foreach (var s in list3)      // 各个值
                {
                    Console.Write(s);
                    Console.WriteLine();
                }
            }

    结果:

    AA

    BB

    CC

    EE

    GG

    DD

    MM

    如果把上面取并集代码中的
    list3 = list1.Union(list2).ToList();
    换成
    list3 = list1.Concat(list2).ToList();
    或
    list1.AddRange(list2);
    list3.AddRange(list1);
    则将会保留重复项

    结果如下:

    {AA, BB, CC, EE, GG, BB, DD, GG, MM }

    原文: CSDN

  • 相关阅读:
    事务
    约束条件(CONSTRAINTS)
    算术运算符
    数据查询、修改指令
    iview-admin使用webpack打包之后发布报Uncaught SyntaxError: Unexpected token <
    使用localhost可以访问,但使用本地ip+端口号无法访问
    datatables里面的search怎么去掉?
    删除操作之后的确定或取消弹出框?
    jquery实现上传图片本地预览效果
    怎么改变title属性的样式?
  • 原文地址:https://www.cnblogs.com/Cein/p/11465737.html
Copyright © 2011-2022 走看看