Foros del Web » Programación para mayores de 30 ;) » .NET »

[SOLUCIONADO] comparar listas

Estas en el tema de comparar listas en el foro de .NET en Foros del Web. Buenas a todos. Necesito que por favor alguien me ayude a como comparar 2 listas. Una de las listas contiene muchos objetos con todas sus ...
  #1 (permalink)  
Antiguo 23/01/2016, 14:26
(Desactivado)
 
Fecha de Ingreso: febrero-2014
Mensajes: 21
Antigüedad: 10 años, 2 meses
Puntos: 0
comparar listas

Buenas a todos.

Necesito que por favor alguien me ayude a como comparar 2 listas. Una de las listas contiene muchos objetos con todas sus propiedades, como para que entiendan son objetos de tipo articulos; y tengo que compararla con otra lista que solo me va pasar los codigos pero que tambien es de tipo articulo, pero aclaro, solo me tiene en sus propiedades el codigo del articulo.

En un principio leyendo encontre que existe un metodo de List<> que se llama except que compara las listas, pero me encuentro que mi lista puede tener varias articulo del mismo tipo(codigo) y si bien me devulve la excepcion de codigos no me esta separando si se repite. Es decir si hay 5 articulo de un codigo 5 y queiro que lo compare con otra lista que tiene un solo articulo de codigo 5, ese codigo no me lo esta devolviendo por ejemplo:

Código:
double[] numbers1 = { 2.0, 2.1, 2.2, 2.2, 2.2, 2.2, 2.2, 2.2, 2.2, 2.3, 2.4, 2.5 };
double[] numbers2 = { 2.2 };

IEnumerable<double> onlyInFirstSet = numbers1.Except(numbers2);

foreach (double number in onlyInFirstSet)
    Console.WriteLine(number);

/*
 This code produces the following output:

 2
 2.1
 2.3
 2.4
 2.5
*/

Desde ya muchas gracias.
  #2 (permalink)  
Antiguo 23/01/2016, 17:22
(Desactivado)
 
Fecha de Ingreso: enero-2015
Mensajes: 393
Antigüedad: 9 años, 3 meses
Puntos: 52
Respuesta: comparar listas

No se entiende mucho tu enunciado.

Los articulos que tengan codigo repetido, los tenes que INCLUIR o EXCLUIR??

Nota aparte: Enumerable.Except() no es un metodo de List<T>, sino un Extension Method declarado en la clase System.Linq.Enumerable, que opera sobre IEnumerable<T>
  #3 (permalink)  
Antiguo 24/01/2016, 13:26
(Desactivado)
 
Fecha de Ingreso: febrero-2014
Mensajes: 21
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: comparar listas

Hola agleiva.

Te voy a explicar el problema porque se me hace facil de esa forma. Tengo una lista de articulos que se lleva una persona y necesito comparar otra lista que es basicamete lo que devuelvo. Es decir, tengo dos listas del mismo tipo y necesito compararla y eliminar los datos duplicados.

Gracias.
  #4 (permalink)  
Antiguo 25/01/2016, 15:35
(Desactivado)
 
Fecha de Ingreso: febrero-2014
Mensajes: 21
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: comparar listas

Bueno, como dice el dicho lo que es dificil de explicar es dificil de hacer. En fin, ya lo solucione y volvi para compartir el codigo por si algun dia le sirve:

Código c#:
Ver original
  1. // debria devolver => { 1, 2, 2, 4, 4, 5 }
  2.             int[] listaUno = new int[] { 1, 1, 1, 2, 2, 2, 2, 3, 4, 4, 5 };
  3.             int[] listaDos = new int[] { 1, 1, 2, 2, 3 };
  4.  
  5.             var agrupUno = listaUno.GroupBy(i => i, (k, v) => new { Codigo = k, Cantidad = v.Count() }).ToArray();
  6.             var agrupDos = listaDos.GroupBy(i => i, (k, v) => new { Codigo = k, Cantidad = v.Count() }).ToArray();
  7.  
  8.             var resul = (from a1 in agrupUno
  9.                         join a2 in agrupDos
  10.                         on a1.Codigo equals a2.Codigo into lj
  11.                         from laposta in lj.DefaultIfEmpty()
  12.                         select new { Codigo = a1.Codigo, Cantidad = (laposta == null)? a1.Cantidad: (a1.Cantidad - laposta.Cantidad) }).ToArray();

Es un poco rebuscado, si alguien mas quiere aportar algo bienvenido sea.

Etiquetas: c#
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:03.