C#中如何判断list是否完整包含另一个list
2021/7/31 17:07:42
本文主要是介绍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)))
{
//对于小集合的所有主键,如果它的任意一个键都存在于大集合中,就可以判定大集合全包含小集合
}
|
这篇关于C#中如何判断list是否完整包含另一个list的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-12-06使用Microsoft.Extensions.AI在.NET中生成嵌入向量
- 2024-11-18微软研究:RAG系统的四个层次提升理解与回答能力
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#