2010-05-27 2 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 может измениться. Я открыт для любых идей. Я знаю, что я всегда могу пройти через все и проверить, не является ли целое exsist и отслеживать его, но я думал, что может быть проще?

ответ

2

Вы можете использовать Enumerable.Intersect способ для этого. И измените свой ArrayList на List(Of T). Это упрощает использование методов LINQ.

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

Точно, что я надеялся найти, спасибо! –

0

Если у вас уже есть код, который дает общие элементы двух списков, можно легко расширить, что в любое количество списков:

  • Получить список общих элементов первых двух списков.
  • Тогда получите общие элементы этого списка результатов и список третьего источника,
  • Тогда общие элементы нового списка результатов и четвертый источник список
  • т.д.
+0

Hee Ганса. 't Wordt tijd dat je LINQ gaat leren, je antwoord is veel te generiek ;-) Trouwens, ik miste jullie dit jaar op de DevDays. – Steven

+0

Хой Стивен, ik имел хед экспретов generiek gehouden, het klonk nogal als huiswerk. Придерживаясь, мы торгуем. Volgende keer beter. –

1

Чтобы добавить ответ Стивена: если вы не можете изменить ArrayList объекты List(Of Integer) объектов, вы можете сделать это:

Dim set = al1.OfType(Of Integer)() _ 
    .Intersect(al2.OfType(Of Integer)()) _ 
    .Intersect(al3.OfType(Of Integer)()) 
Смежные вопросы