Estoy tratando de encontrar una intersección con LINQ.LINQ intersect, multiple lists, some empty
muestra:
List<int> int1 = new List<int>() { 1,2 };
List<int> int2 = new List<int>();
List<int> int3 = new List<int>() { 1 };
List<int> int4 = new List<int>() { 1, 2 };
List<int> int5 = new List<int>() { 1 };
desea devolver: 1, tal como existe en todas las listas .. Si me quedo:
var intResult= int1
.Intersect(int2)
.Intersect(int3)
.Intersect(int4)
.Intersect(int5).ToList();
no devuelve nada como 1, obviamente, no está en la lista INT2 . ¿Cómo hago para que esto funcione independientemente de si una lista está vacía o no?
Utilice el ejemplo anterior o:
List<int> int1 = new List<int>() { 1,2 };
List<int> int2 = new List<int>();
List<int> int3 = new List<int>();
List<int> int4 = new List<int>();
List<int> int5 = new List<int>();
¿Cómo devuelvo 1 & 2 en este caso .. No sé de antemano si las listas están pobladas ...
Considere la intersección de '{1}, {2}, {3}'. Después de intersecar los dos primeros, estás tratando de encontrar la intersección de '{}, {3}'. Y nos está pidiendo que propongamos algo que diera '{}' en este caso, pero '{3}' si realizáramos la misma operación en '{3}, {}'. Si no desea que se tengan en cuenta las listas vacías, elimínelas de consideración antes de intentar calcular la intersección. –
@Anon, observación interesante. –
¿Cómo manejaría eso? if (int2.Count> 0) var set = int1.Intersect (int2); if (int3.Count> 0) var set2 = set.Intersect (set); if (int2.Count> 0) var set3 = int2.Intersect (int2); ..... Parece un poco hokey ... –