このように交差点を見つけたいリストのリストがあります:
var list1 = new List<int>() { 1, 2, 3 };
var list2 = new List<int>() { 2, 3, 4 };
var list3 = new List<int>() { 3, 4, 5 };
var listOfLists = new List<List<int>>() { list1, list2, list3 };
// expected intersection is List<int>() { 3 };
IEnumerable.Intersect()を使用してこれを行う方法はありますか?
編集:私はこれについてもっと明確にすべきでした:私は本当にリストのリストを持っています、私はいくつになるかわかりません、上記の3つのリストは単なる例でした、私が持っているのは実際には IEnumerable<IEnumerable<SomeClass>>
解決
すべての素晴らしい答えをありがとう。これを解決するには、List + Aggregate(@Marcel Gosselin)、List + foreach(@ JaredPar、@ Gabe Moothart)、HashSet + Aggregate(@jesperll)、HashSet + foreach(@Tony the Pony)の4つのオプションがあることがわかりました。私は様々なこれらのソリューションにいくつかのパフォーマンステスト(やったリストの数を、要素数各リストとにおける乱数の最大サイズ。
ほとんどの状況で、HashSetはリストよりもパフォーマンスが優れていることがわかります(HashSetの性質上、大きなリストと小さな乱数サイズを除く)。foreachメソッドと集計の間に実際の違いは見つかりませんでした。メソッド(foreachメソッドのパフォーマンスはわずかに向上します。)
私にとって、集計方法は本当に魅力的です(そして、私はそれを受け入れられた答えとして使用します)が、それが最も読みやすい解決策であるとは言えません。