是否有Linq方法告诉A是B的子集?

时间:2014-10-10 21:29:05

标签: c# linq

我有2个数组string[] A = { "a", "b", "c" }string[] B = { "a", "b", "c", "d", "e" }

是否有任何方法可以直接判断A是B的子集?除了只删除B的不同元素,但不知道它是否完全是B的子集。

感谢您的帮助。

4 个答案:

答案 0 :(得分:9)

你可以这样做,只需:

A.All(B.Contains);

您可能需要检查Length以确保它们的大小不同而A是一个子集

bool isSubset = A.All(B.Contains) && A.Length < B.Length;

答案 1 :(得分:8)

甚至还有一种用于此目的的方法。您可以使用HastSet<T>.IsSubsetOf

var aSet = new HashSet<string>(A);
bool isASubsetOfB = aSet.IsSubsetOf(B);

答案 2 :(得分:3)

这应该有效

bool isSubSet = !A.Except(B).Any();

答案 3 :(得分:2)

您可以组合SequenceEquals和Intersect:

var isASubsetOfB = B.Intersect(A).SequenceEqual(A)