IEnumerable包含IEnumerable

Sna*_*per 3 c# linq

我有两个IEnumerable对象,我想验证其中一个是否包含另一个的所有元素.

我正在使用,obj1.Intersect(obj2).Any()但交叉口没有像我期望的那样工作.即使只obj2存在其中一个元素,它也会返回true obj1.

有没有办法验证是否obj2存在所有元素obj1

Ste*_*art 7

没有一个LINQ方法可以满足您的需要而无需至少指定一个lambda.但是,有多种方法可以使用LINQ.以下是一些选项(测试if obj2是否为子集obj1):

obj1.Intersect(obj2).Count() == obj2.Count()
Run Code Online (Sandbox Code Playgroud)

要么

obj2.All(x=>obj1.Contains(x))
Run Code Online (Sandbox Code Playgroud)

要么

obj2.Except(obj1).Any()
Run Code Online (Sandbox Code Playgroud)

  • 如果`obj2`有重复,第一个可能会返回误报. (4认同)