He estado buscando algo así durante días. Estoy tratando de eliminar todos los elementos de una lista más grande A según una lista B.Eliminar una lista de objetos de otra lista
Supongamos que tengo una lista general con 100 elementos con diferentes IDS y obtengo otra lista con elementos específicos con solo 10 registros. Necesito eliminar todos los elementos de la primera lista que no existe dentro de la segunda lista.
Trataré de mostrar el código que realmente no sé cómo no funcionó.
List<Obj> listA = new List<Obj>();
List<Obj> listB = new List<Obj>();
//here I load my first list with many elements
//here I load my second list with some specific elements
listA.RemoveAll(x => !listB.Contains(x));
No sé por qué pero no está funcionando. Si pruebo este ejemplo con un tipo List<int>
, funciona bien, pero me gustaría hacerlo con mi objeto. Este objeto obtuvo una identificación pero no sé cómo usar esta identificación dentro de la oración LINQ.
El problema es el contiene ya que ambas listas no contienen el mismo objeto (puede ser otra instancia de la misma clase, pero con los mismos datos). – HiperiX
¿anuló Equals/GetHashcode en su tipo Obj para usar el campo ID en lugar del método heredado de System.Object? –
Mis objetos tienen el mismo tipo pero diferente contenido, solo tienen que comparar los ID y no el objeto completo. Acabo de seguir IAbstract ~ respuesta y funcionó como un amuleto ... ¡Gracias, muchachos! –