检查Array1中的所有值是否存在于array2的值中?

时间:2014-05-14 07:34:06

标签: c#

我想说,

class A
{
    string[] values;
}

class B
{
    string[] values;
}

我有2个对象,

var a= new A{ values ={"a","b","c"}}
var b= new A{ values ={"b","c"}}

如何确保B的所有值都能以有效的方式存在于A.values中?

3 个答案:

答案 0 :(得分:3)

使用Enumerable.Exceptb中获取a中不存在的唯一项目(这是一项设置操作,因此非常有效)。然后使用Enumerable.Any检查是否没有此类项目。如果b中没有a中没有的唯一项目,则b中的所有项目都存在于a中:

bool allExist = !b.values.Except(a.values).Any();

答案 1 :(得分:2)

您想检查A组是否包含B组。 为此,使用Except生成两组之间的集合差异,并检查差异是否包含任何元素。

var contains = ! b.values.Except(a.values).Any();

如果你想象一个维恩图,这些事情会更容易。

答案 2 :(得分:0)

已编辑

List<string> listA = new List<string>(a);
List<string> listB = new List<string>(b);
var listCommon = listA.Where(listB.Contains);