Пересечение коллекции коллекций в 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 });

вывод должен быть:

{ 4, 5 }

Как это может быть достигнуто в краткой форме?

1 ответов


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