удаление из списка элементов совпадающих с элементами 2 списка

nvrskozzy

Новичок
Регистрация
11.07.2025
Сообщения
22
Благодарностей
1
Баллы
3
Подскажите как это реализовать проще всего? не нашёл такого в работе со списками, тоесть нужен аналог array_diff в php?
 

heks

Client
Регистрация
01.10.2013
Сообщения
1 433
Благодарностей
412
Баллы
83
делаешь 2 списка, берешь из одного списка слова и ищешь слова в другом списке и удаляешь если найдет
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
21 683
Благодарностей
9 654
Баллы
113
Подскажите как это реализовать проще всего? не нашёл такого в работе со списками, тоесть нужен аналог array_diff в php?
Возможно, вам помогут эти обсуждения и реализации:

 
  • Спасибо
Реакции: djaga

code

Administrator
Регистрация
04.06.2025
Сообщения
77
Благодарностей
24
Баллы
8
Подскажите как это реализовать проще всего? не нашёл такого в работе со списками, тоесть нужен аналог array_diff в php?
Использование LINQ (самый простой способ):
// Аналог array_diff - найти элементы из list1, которых нет в list2
string[] array1 = { "apple", "banana", "orange", "grape" };
string[] array2 = { "banana", "grape" };

// Получаем разницу
string[] diff = array1.Except(array2).ToArray();
// Результат: ["apple", "orange"]

// Если работаете со списками ZennoPoster
List<string> list1 = new List<string> { "apple", "banana", "orange", "grape" };
List<string> list2 = new List<string> { "banana", "grape" };

List<string> difference = list1.Except(list2).ToList();
Наглядный пример:
// Если у вас списки привязаны к файлам
IZennoList list1 = project.Lists["List1"];
IZennoList list2 = project.Lists["List2"];

// Создаем временный список для результата
List<string> tempList1 = new List<string>();
List<string> tempList2 = new List<string>();

// Копируем данные из списков ZennoPoster
for (int i = 0; i < list1.Count; i++) {
    tempList1.Add(list1[i]);
}
for (int i = 0; i < list2.Count; i++) {
    tempList2.Add(list2[i]);
}

// Находим разницу
List<string> difference = tempList1.Except(tempList2).ToList();

// Сохраняем результат в новый список ZennoPoster
IZennoList resultList = project.Lists["ResultList"];
resultList.Clear();
foreach (string item in difference) {
    resultList.Add(item);
}
 

b1zar

Client
Регистрация
29.06.2019
Сообщения
112
Благодарностей
69
Баллы
28
Через цикл. Либо Contains|Equals или IndexOf
 

nvrskozzy

Новичок
Регистрация
11.07.2025
Сообщения
22
Благодарностей
1
Баллы
3
Я в итоге кубиками собрал цикл проход через список построчно и сравнение, думал есть проще варианты, долго он перебирает каждую строчку, в целом задача решена, с++ почему-то пока не удаётся освоить
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
21 683
Благодарностей
9 654
Баллы
113
Я в итоге кубиками собрал цикл проход через список построчно и сравнение, думал есть проще варианты, долго он перебирает каждую строчку, в целом задача решена, с++ почему-то пока не удаётся освоить
Если в ПМ с включенной анимацией, то да - долго.
Если списки не такие уж большие, то в ЗП ваш метод будет работать быстро.
В ПМ вы можете включить отложенную анимацию и получить почти такую же скорость, как в ЗП.
 
  • Спасибо
Реакции: nvrskozzy и djaga

nvrskozzy

Новичок
Регистрация
11.07.2025
Сообщения
22
Благодарностей
1
Баллы
3
Спасибо, да в ПМ с включенной анимацией делал!
 

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