ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C#中如何判断list是否完整包含另一个list

2021-07-31 16:00:34  阅读:442  来源: 互联网

标签:C# List list listModel2 listModel var 完整 集合 new


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

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)))   {       //对于小集合的所有主键,如果它的任意一个键都存在于大集合中,就可以判定大集合全包含小集合  }

标签:C#,List,list,listModel2,listModel,var,完整,集合,new
来源: https://www.cnblogs.com/Alex80/p/15084412.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有