我有两个这样的名单。
Dim List1 As IList(Of String) = New List(Of String)
Dim ListMatch As IList(Of String) = New List(Of String)
我需要弄清楚List1是否包含ListMatch的所有项目。我怎么能这样做是VB.Net?
答案 0 :(得分:2)
您可以使用Not SmallCollection.Except(LargeCollection).Any
:
Dim containsAll = Not ListMatch.Except(List1).Any()
Documentation of Enumerable.Except
:
此方法首先返回那些未出现的元素 第二。它不会返回那些没有的元素 出现在第一位。
由于Except
是一种设定方法,因此不会考虑重复项。因此,如果您还想知道List1
是否包含ListMatch
的相同项目数,您可以使用(效率较低):
Dim list1Lookup = List1.ToLookup(Function(str) str)
Dim listMatchLookup = ListMatch.ToLookup(Function(str) str)
Dim containsSameCount = listMatchLookup.
All(Function(x) list1Lookup(x.Key).Count() = x.Count())