在vb.net应用程序中,我有一组当前存储在多个Arraylist中的整数(但如果需要,这可能会有所不同)
al1 = {1,2,3,6,7,9} al2 = {2,3,4,9} al3 = {2,3,19}
我想获得集{2,3}
我想过使用LINQ加入列表,但是Arraylist的数量可以改变。我对任何想法持开放态度。我知道我总是可以循环遍历所有内容并检查整数是否存在并跟踪它,但我认为可能有更简单的方法?
答案 0 :(得分:2)
您可以使用Enumerable.Intersect
方法。并将ArrayList
更改为List(Of T)
。这样可以更容易地使用LINQ方法。
Dim set = al1.Intersect(al2).Intersect(al3)
答案 1 :(得分:1)
要添加到Steven的答案:如果您无法将ArrayList
个对象更改为List(Of Integer)
个对象,您仍然可以执行此操作:
Dim set = al1.OfType(Of Integer)() _
.Intersect(al2.OfType(Of Integer)()) _
.Intersect(al3.OfType(Of Integer)())
答案 2 :(得分:0)
如果您已经有代码可以提供两个列表的公共项目,那么很容易将其扩展到任意数量的列表中: