是否有Linq方法来判断a是B的子集

本文关键字:子集 判断 Linq 方法 是否 | 更新日期: 2023-09-27 18:26:15

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

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

谢谢你的帮助。

是否有Linq方法来判断a是B的子集

您可以简单地做到这一点:

A.All(B.Contains);

您可能需要检查Length以确保它们的大小不相同,并且A是的子集

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

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

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

这应该能在中工作

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

您可以组合SequenceEquals和Intersect:

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