[c#] Удалить элементы из одного списка в другом


3 Answers

Вам не нужен индекс, так как класс List<T> позволяет удалять элементы по значению, а не индексу, с помощью функции « Remove .

foreach(car item in list1) list2.Remove(item);
Question

Я пытаюсь понять, как пройти общий список элементов, которые я хочу удалить из другого списка элементов.

Итак, скажем, у меня это как гипотетический пример

List<car> list1 = GetTheList();
List<car> list2 = GetSomeOtherList();

Я хочу пересечь list1 с помощью foreach и удалить каждый элемент в List1, который также содержится в List2.

Я не совсем уверен, как это сделать, поскольку foreach не основан на индексе.




list1.RemoveAll(l => list2.Contains(l));



Вы можете использовать LINQ, но я бы пошел с RemoveAll метода RemoveAll . Я думаю, это тот, который лучше выражает ваши намерения.

var integers = new List<int> { 1, 2, 3, 4, 5 };

var remove = new List<int> { 1, 3, 5 };

integers.RemoveAll(i => remove.Contains(i));



Вот ты иди ..

    List<string> list = new List<string>() { "1", "2", "3" };
    List<string> remove = new List<string>() { "2" };

    list.ForEach(s =>
        {
            if (remove.Contains(s))
            {
                list.Remove(s);
            }
        });





Related



Tags

c# c#   .net .net   list