2010-03-28 7 views
7

J'ai une liste de listes que je veux recouper:Intersection une collection de collections dans 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 }); 

sortie doit être:

{ 4, 5 } 

Comment cela peut-il être accompli dans un laconique mode?

+0

Avez-vous besoin d'utiliser des listes? Pourquoi ne pas utiliser Hashsets? –

+0

duplication possible de [Intersection de plusieurs listes avec IEnumerable.Intersect()] (http://stackoverflow.com/questions/1674742/intersection-of-multiple-lists-with-ienumerable-intersect) – Rawling

Répondre

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

Désolé pour faire une erreur the la première fois, j'ai oublié que je devrais descendre à 'IEnumerable '. – mquander

Questions connexes