验证列表是否包含所有其他列表值

时间:2016-02-08 13:10:54

标签: c# linq compare

我有2个int数组,arr1和arr2,例如,验证arr1是否包含arr2包含的所有项目的最有效方法是什么。优先返回bool

例如。

arr1 = [1,2,3,4]
arr2 = [1,2,3,4,5,6,9]
 //return true;

arr1 = [1,2,3,4,10]
arr2 = [1,2,3,4,5,6,9]
 //return false;

我用foreach做了它,但除了蛮力的foreach之外我还想要什么,如果可能的话。

1 个答案:

答案 0 :(得分:9)

如下:

bool subset = !arr1.Except(arr2).Any();

可能会顺利实现为这样的扩展方法:

public static bool ContainsAll<T>(this List<T> list, List<T> other)
{
    return !other.Except(list).Any();
}

然后用法:

bool subset = arr2.ContainsAll(arr1);