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

两个集合如下所示:

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





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值