C#中判断list集合中元素的包含关系

2021年9月26日 5点热度 0条评论 来源: jinge7350

两个集合如下所示:

string[] bigArr = new string[] { "a", "b", "c" };

string[] smallArr = new string[] { "a", "b"};

//在大集合的基础上,根据小集合获取大集合的差集
var exceptArr = bigArr.Except(smallArr);
//判断是否是子集
if(exceptArr.Any())
{
    Console.WriteLine("samllArr 是 bigArr的一个子集");
}
else
{
    Console.WriteLine("samllArr 不是 bigArr的一个子集");
}

但是这种Except的方法,其实以上的方法是按照元素个数找的,只要smallAll中元素的个数小于bigAll中元素的个数exceptArr.Any()就返回true,例如string[] bigArr = new string[] { "a", "b", "c" };
 string[] smallArr = new string[] { "d"};

这种情况下,exceptArr.Any()也会返回true,但这并不是我们想要的结果。那如果想要判断smalAll是否包含在bigAll中,该怎么做呢?方法如下:

if(smallArr.All(t => bigArr.Any(b => b==t)))
{
    Console.WriteLine("samllArr 是 bigArr的一个子集或一样");
}
else
{
    Console.WriteLine("samllArr 不是 bigArr的一个子集或一样");
}

这样就可以正确判断smallAll是否包含在bigAll中。

除此之外,C#中集合运算,例如:

int[] oldArray = { 1, 2, 3, 4, 5 };
int[] newArray = { 2, 4, 5, 7, 8, 9 };
var jiaoJi = oldArray.Intersect(newArray).ToList();//2,4,5
var oldChaJi = oldArray.Except(newArray).ToList();//1,3  oldArray中有的,但是newArray中没有的
var newChaJi = newArray.Except(oldArray).ToList();//7,8,9 
var bingJi = oldArray.Union(newArray).ToList();//1,2,3,4,5,7,8,9




    原文作者:jinge7350
    原文地址: https://blog.csdn.net/jinge7350/article/details/78988674
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。