zoukankan      html  css  js  c++  java
  • C#中如何判断list是否完整包含另一个list

    一般可以对两个集合做交集,然后比较剩余的集合和小的集合数的关系来确定

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    var listModel=new List<Model>();//假设此集合为大的集合
    var listModel2=new List<Model>();//此集合为小集合
    var result= listModel.Intersect(listModel2);
    if (result.Count()==listModel2.Count)
    {
        //此时大集合完整包含小集合
    }
    else if (result.Any()&&result.Count()<listModel2.Count)
    {
        //此时小集合部分包含于大集合
    }
    else{
            //此时交集无任何元素,表示他们没有相同的元素
    }

    不过这个方法一般会有一些限制

    因为Model可能是值类型也可能是引用类型

    对于值类型,这么比较当然没问题,很容易的就得出结果了

    但是对于引用类型,因为默认比较的是引用所以这里难以得到正确的结果;只能自己实现一个比较器

    所以可以有另一个方法,就是根据Model的主键筛选出一个列表,然后根据此列表来查看list的包含关系

    1
    2
    3
    4
    5
    6
    7
     var listModel=new List<Model>();//假设此集合为大的集合
     var listModel2=new List<Model>();//此集合为小集合 
     var listKey = listModel2.Select(c => c.Key).ToList(); 
     if(listKey.All(c=>listModel.Any(s=>s.Key==c))) 
     {    
      //对于小集合的所有主键,如果它的任意一个键都存在于大集合中,就可以判定大集合全包含小集合
     }
  • 相关阅读:
    做汉堡
    结对运算(14曾柏树,15张奇聪)小学生四则运算总结体会
    一个能自动生成小学四则运算题目的程序
    css样式实现立方体制作
    bootstrap导航条+模态对话框+分页样式
    bootstrap 表单+按钮+对话框
    百度地图控件
    百度地图覆盖物0.1版本
    HTML5 javascript 音乐 音频
    html5 javascript 小型计算器
  • 原文地址:https://www.cnblogs.com/Alex80/p/15084412.html
Copyright © 2011-2022 走看看