2010-05-27 34 views
0

整數在vb.net應用我有一組當前存儲在多個ArrayList的整數(但如果需要的話,這可能是不同的東西)如何找到像在多個列表

AL1 = {1,2,3 ,6,7,9} AL2 = {2,3,4,9} AL3 = {2,3,19}

我想獲得集合{2,3}

我想過使用LINQ加入列表,但Arraylist的數量可以改變。我打開任何想法。我知道我總是可以遍歷所有內容並檢查一個整數是否存在並跟蹤它,但我認爲可能有一種更簡單的方法?

回答

2

可以使用Enumerable.Intersect方法爲此。並將您的ArrayList更改爲List(Of T)。這使得更容易使用LINQ方法。

Dim set = al1.Intersect(al2).Intersect(al3) 
+0

這正是我希望找到的,謝謝! – 2010-05-27 13:27:03

0

如果你已經有代碼,讓兩個列表的普通物品,很容易延伸到任意數量的列表:

  • 獲得第一個兩個列表中共同的項目清單。
  • 然後得到這個結果列表和第三源列表的共同項目,
  • 然後新的結果列表中的常用物品和第四源列表
+0

熙漢斯。 't Wordt tijd dat je jee LINQ gaat leren,je antwoord is veel te generiek ;-) Trouwens,ik miste jullie dit jaar op de DevDays。 – Steven 2010-05-27 13:18:20

+0

Hoi Steven,我已經表達了generiek gehouden,het klonk nogal als huiswerk。恩inderdaad,我們倉頡niet。 Volgende更加親切的動物。 – 2010-05-28 06:10:33

1

爲了增加史蒂芬的回答是:如果你不能改變你的ArrayList對象List(Of Integer)對象,你仍然可以做到這一點:

Dim set = al1.OfType(Of Integer)() _ 
    .Intersect(al2.OfType(Of Integer)()) _ 
    .Intersect(al3.OfType(Of Integer)())