[SOLVED] Сравнение списков по первому столбцу

Ikigai

Client
Регистрация
13.12.2016
Сообщения
275
Благодарностей
27
Баллы
28
Добрый день,

Требуется сравнить список 1 со списком 2( по первому столбцу/параметру "x") и на выходе получить список 3 из элементов списка 1, которых нет в списке 2.

Список 1:
x1;yy1
x2;yy2
x5;yy5

Список 2:
x2;zz1
x3;zz3
x5;zz5



Нашел решение на форуме для обычных списков, но в моем случае все более сложно:
Код:
var list1 = project.Lists["1"];
var list2 = project.Lists["2"];
var list3 = list1.Except(list2);
project.Lists["3"].AddRange(list3);
 

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 804
Баллы
113
project.Lists["blacklist"] - это "Список 2". Т.е. список с которым будем сравниваться.
project.Lists["INPUT"] - это "Список 1". Данный список сравниваем со "Списком 2".
project.Lists["OUTPUT"] - в этом списке будет результат сравнения.

C#:
IEnumerable<string> blacklist = from item in project.Lists["blacklist"]
                                select item.Split(';')[0];
   
IEnumerable<string> output = from item in project.Lists["INPUT"]
                             where !(blacklist.Contains(item.Split(';')[0]))
                             select item;
                           

project.Lists["OUTPUT"].AddRange(output);
P.S. Я не проверял данный код на больших списках, т.е. я не знаю как быстро он отработает на списках с сотнями тысяч\миллионами строк.
 
  • Спасибо
Реакции: fridayman

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