如何检查列表是否包含VB.Net中的另一个列表项

时间:2018-06-05 10:34:03

标签: vb.net

我有两个这样的名单。

Dim List1 As IList(Of String) = New List(Of String)
Dim ListMatch As IList(Of String) = New List(Of String)

我需要弄清楚List1是否包含ListMatch的所有项目。我怎么能这样做是VB.Net?

1 个答案:

答案 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())