Поиск общих строк в списках (C#)

And

Новичок
Регистрация
22.03.2018
Сообщения
12
Благодарностей
0
Баллы
1
Эта тема не раз обсуждалась на форуме, но я не смог найти того, что мне нужно. Много написано про удаление элементов одного списка из другого и добавление полученных данных в третий (отфильтрованный) список.

У меня другая задача. Уверен, многие из вас уже делали это. Нужно найти общие строки в двух списках и поместить их в 3й.

Пример.

Список А:

1

2

3

4

Список Б:

3

4

5

6

Список В, который необходимо получить:

3

4

Хотелось бы сделать это через C#, поскольку мне нужно обрабатывать списки с десятками тысяч строк и скорость важна.

Я нашел такой код.
Код:
List<string> bad = project.Lists["2"].ToList();//стопслова
List<string> mix = project.Lists["1"].ToList();//база
var good =project.Lists["3"];//отфильтрованный список
List<string> kostyl = new List<string>();//эээ..:/
//магия :)
kostyl=mix.Except(bad).ToList();
foreach(string data in kostyl)
{good.Add(data);}
Подскажите, пожалуйста, какая «магия» должна произойти, чтобы вместо исключения (Except) третий список наполнялся общими строками.
Если есть иные варианты, буду признателен за помощь.
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
C#:
IZennoList mixList = project.Lists["MixList"];
IZennoList badList = project.Lists["BadkList"];
IZennoList goodList = project.Lists["GoodList"];
goodList.AddRange(mixList.Intersect(badList));
или
C#:
project.Lists["GoodList"].AddRange(project.Lists["MixList"].Intersect(project.Lists["BadkList"]));
 
  • Спасибо
Реакции: GreenWay, Kost9lbrik и And

And

Новичок
Регистрация
22.03.2018
Сообщения
12
Благодарностей
0
Баллы
1
C#:
IZennoList mixList = project.Lists["MixList"];
IZennoList badList = project.Lists["BadkList"];
IZennoList goodList = project.Lists["GoodList"];
goodList.AddRange(mixList.Intersect(badList));
или
C#:
project.Lists["GoodList"].AddRange(project.Lists["MixList"].Intersect(project.Lists["BadkList"]));
Спасибо большое. Работает! )
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)