如何在多个列表中找到类似的整数

时间:2010-05-27 13:02:18

标签: .net asp.net vb.net linq

在vb.net应用程序中,我有一组当前存储在多个Arraylist中的整数(但如果需要,这可能会有所不同)

al1 = {1,2,3,6,7,9} al2 = {2,3,4,9} al3 = {2,3,19}

我想获得集{2,3}

我想过使用LINQ加入列表,但是Arraylist的数量可以改变。我对任何想法持开放态度。我知道我总是可以循环遍历所有内容并检查整数是否存在并跟踪它,但我认为可能有更简单的方法?

3 个答案:

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

如果您已经有代码可以提供两个列表的公共项目,那么很容易将其扩展到任意数量的列表中:

  • 获取前两个列表的常用项列表。
  • 然后获取此结果列表和第三个源列表的常用项目
  • 然后是新结果列表和第四个源列表的常用项目