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

  • Автор темы Автор темы nvrskozzy
  • Дата начала Дата начала

nvrskozzy

Client
Регистрация
11.07.2025
Сообщения
276
Реакции
32
Баллы
28
Подскажите как это реализовать проще всего? не нашёл такого в работе со списками, тоесть нужен аналог array_diff в php?
 
делаешь 2 списка, берешь из одного списка слова и ищешь слова в другом списке и удаляешь если найдет
 
Подскажите как это реализовать проще всего? не нашёл такого в работе со списками, тоесть нужен аналог array_diff в php?
Возможно, вам помогут эти обсуждения и реализации:

 
  • Спасибо
Реакции: djaga
Подскажите как это реализовать проще всего? не нашёл такого в работе со списками, тоесть нужен аналог 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);
}
 
Через цикл. Либо Contains|Equals или IndexOf
 
Я в итоге кубиками собрал цикл проход через список построчно и сравнение, думал есть проще варианты, долго он перебирает каждую строчку, в целом задача решена, с++ почему-то пока не удаётся освоить
 
Я в итоге кубиками собрал цикл проход через список построчно и сравнение, думал есть проще варианты, долго он перебирает каждую строчку, в целом задача решена, с++ почему-то пока не удаётся освоить
Если в ПМ с включенной анимацией, то да - долго.
Если списки не такие уж большие, то в ЗП ваш метод будет работать быстро.
В ПМ вы можете включить отложенную анимацию и получить почти такую же скорость, как в ЗП.
 
  • Спасибо
Реакции: nvrskozzy и djaga
Спасибо, да в ПМ с включенной анимацией делал!
 
Я в итоге кубиками собрал цикл проход через список построчно и сравнение, думал есть проще варианты, долго он перебирает каждую строчку, в целом задача решена, с++ почему-то пока не удаётся освоить
нашел че то проще?
 
задачу дайте chatGPT и скажите ему что нужно (только подробно - код C#). где то подобное есть у меня.
 

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