2010-03-28 20 views
7

Tengo una lista de listas que quiero para intersectar: ​​se cruzan una colección de colecciones en LINQ

List<List<int>> input = new List<List<int>>(); 
input.Add(new List<int>() { 1, 2, 4, 5, 8 }); 
input.Add(new List<int>() { 3, 4, 5 }); 
input.Add(new List<int>() { 1, 4, 5, 6 }); 

de salida debe ser:

{ 4, 5 } 

¿Cómo se puede lograr esto en un escueto ¿Moda?

+0

¿Necesita estar en las listas? ¿por qué no usar Hashsets? –

+0

posible duplicado de [Intersección de listas múltiples con IEnumerable.Intersect()] (http://stackoverflow.com/questions/1674742/intersection-of-multiple-lists-with-ienumerable-intersect) – Rawling

Respuesta

16
var result = input.Cast<IEnumerable<int>>().Aggregate((x, y) => x.Intersect(y)) 
+1

Disculpe por haber cometido un error primera vez, olvidé que tendría que arrojarme a 'IEnumerable '. – mquander

Cuestiones relacionadas