您的位置:首页 > 编程语言 > C#

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

2018-01-06 14:37 821 查看
两个集合如下所示:

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: