両方のリストに同じアイテムが含まれているかどうかを知りたい場合は、次を使用できますEnumerable.Except
。
Dim bothContainSameItems As Boolean
If list1.Count > list2.Count Then
bothContainSameItems = Not list1.Except(list2).Any()
Else
bothContainSameItems = Not list2.Except(list1).Any()
End If
または、次の助けを借りてHashSet(Of T)
:
Dim l1Set = New HashSet(Of Integer)(list1)
Dim l2Set = New HashSet(Of Integer)(list2)
bothContainSameItems = l1Set.SetEquals(l2Set)
どちらのアプローチも重複を無視することに注意してください。したがって、彼らはequal
次の目的で戻ります。
list1.AddRange({1, 1, 2, 3})
list2.AddRange({3, 2, 1, 3})
両方のリストですべての数値が同じ数であるかどうかを確認する方法を次に示します。
bothContainSameItems = list1.Count = list2.Count
If bothContainSameItems Then
Dim l1Ordered = list1.OrderBy(Function(i) i).ToList()
Dim l2Ordered = list2.OrderBy(Function(i) i).ToList()
For i As Int32 = 0 To l1Ordered.Count - 1
If l1Ordered(i) <> l2Ordered(i) Then
bothContainSameItems = False
Exit For
End If
Next
End If