使用するIntersect
var r = List1.Intersect(List2).Intersect(ListN);
例:
var r = new [] { 1, 2, 3, 4 }
.Intersect(new [] { 2, 3, 4, 5 })
.Intersect(new [] { 3, 4, 5, 6 });
// r now contains 3, 4
ドキュメント: http://msdn.microsoft.com/en-us/library/bb460136.aspx
以下は、リストのリストを受け取り、それらすべてに対して共通部分を実行する拡張メソッドです。上記と同じですが、おそらく使いやすいですか?
public static IEnumerable<T> IntersectAll<T>(
this IEnumerable<T> list,
params IEnumerable<T>[] otherLists
) {
foreach (var otherList in otherLists)
{
list = list.Intersect(otherList);
}
return list;
}
使用法:
var r = new [] { 1, 2, 3, 4 }
.IntersectAll(new [] { 2, 3, 4, 5 }, new [] { 3, 4, 5, 6 });