Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

167
Vistas
Compara dos listas y encuentra el desajuste

Tengo 2 listas:

 List<DefectPopulation> lst_codeDefectSrc = new List<DefectPopulation>(); List<DefectPopulation> lst_codeDefectDest = new List<DefectPopulation>();

que son de tipo

 private class DefectPopulation { public int ClassCode { get; set; } public int DefectCount { get; set; } }

Ahora quiero comparar las dos listas y encontrar el elemento que no coincide.

En la siguiente condición, dice que se encontró una falta de coincidencia, pero quiero saber dónde está:

 List<DefectPopulation> lst_codeDefectSrc = new List<DefectPopulation>(); List<DefectPopulation> lst_codeDefectDest = new List<DefectPopulation>(); private class DefectPopulation { public int ClassCode { get; set; } public int DefectCount { get; set; } } List<DefectPopulation> lst_diff = new List<DefectPopulation>(); if (lst_codeDefectSrc.Count == lst_codeDefectDest.Count) { if (lst_codeDefectSrc.Except(lst_codeDefectDest).ToList().Any() && lst_codeDefectDest.Except(lst_codeDefectSrc).ToList().Any()) { status = false; } else { status = true; } }
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Cambio

 if (lst_codeDefectSrc.Except(lst_codeDefectDest).ToList().Any() && lst_codeDefectDest.Except(lst_codeDefectSrc).ToList().Any()) ...

A

 var inSrcNotInDest = lst_codeDefectSrc.Except(lst_codeDefectDest).ToList(); var inDestNotInSrc = lst_codeDefectDest.Except(lst_codeDefectSrc).ToList(); if (inSrcNotInDest.Any() && inDestNotInSrc.Any()){ // Use the respective list however you want lst_diff.AddRange(inSrcNotInDest); lst_diff.AddRange(inDestNotInSrc);

Tenga en cuenta que el código anterior utilizará el comparador de igualdad predeterminado, y esa es una comparación de referencia para los tipos de clase. Si desea la igualdad de valores, debe escribir su propio IEqualityComparer<DefectPopulation> , implementar IEquatable<DefectPopulation> o cambiarlo a una estructura, ya que usa la igualdad de valores de forma predeterminada.

over 4 years ago · Santiago Trujillo Denunciar

0

Esto se puede lograr de la siguiente manera simple.

Si la intersección de dos listas tiene el mismo número de elementos que las listas, eso significa que dos listas son iguales.

Puedes usar el siguiente código:

 var commonItems = lst_codeDefectDest.Select(item => new { item.ClassCode, item.DefectCount }) .Intersect(lst_codeDefectSrc.Select(item => new { item.ClassCode, item.DefectCount })); status = commonItems.Count() == lst_codeDefectSrc.Count;

Está muy bien explicado aquí: https://dotnettutorials.net/lesson/linq-intersect-method/

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda