68 votos

Eliminar artículos de una lista en otra

Estoy tratando de averiguar cómo atravesar una lista genérica de artículos que quiero eliminar de otra lista de artículos.

Así que no quiero decir que tengo esto como un ejemplo hipotético

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

Quiero atravesar la lista 1 con un antebrazo y eliminar cada elemento de la lista 1 de la lista 2.

No estoy muy seguro de cómo hacer eso, ya que el frente no se basa en un índice.

146voto

Mark Byers Puntos 318575

Puedes usar Excepto :

List<car> list1 = GetTheList();
List<car> list2 = GetSomeOtherList();
List<car> result = list2.Except(list1).ToList();

Probablemente ni siquiera necesites esas variables temporales:

List<car> result = GetSomeOtherList().Except(GetTheList()).ToList();

Tengan en cuenta que Except no modifica ninguna de las dos listas, sino que crea una nueva lista con el resultado.

14voto

Adam Robinson Puntos 88472

No necesitas un índice, ya que el List<T> permite eliminar elementos por su valor en lugar de indexarlos mediante el uso de la clase Remove función.

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

13voto

Erel Segal-Halevi Puntos 275

Recomendaría usar el Métodos de extensión del LINQ . Puedes hacerlo fácilmente con una línea de código como esta:

list2 = list2.Except(list1).ToList();

Esto es asumiendo, por supuesto, que los objetos de la lista1 que se están eliminando de la lista2 son el mismo caso.

8voto

João Angelo Puntos 24422

Podrías usar LINQ, pero yo iría con RemoveAll método. Creo que es el que mejor expresa su intención.

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

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

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

-4voto

Ian P Puntos 7930

Aquí tienes

    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);
            }
        });

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X