using System.Collections.Generic;
public static void Main()
DateTime dStart = DateTime.Now;
int[] array1 = { 1, 2, 3, 7, 8, 9, 10, 11, 1, 2, 3, 7, 8, 9, 10, 11, 1, 2, 3, 7, 8, 9, 10, 11, 1, 2, 3, 7, 8, 9, 10, 11
, 2, 3, 7, 8, 9, 10, 11, 1, 2, 3, 7, 8, 9, 10, 11, 1, 2, 3, 7, 8, 9, 10, 11, 1, 2, 3, 7, 8, 9, 10, 11,
7, 8, 9, 10, 11, 1, 2, 3, 7, 8, 9, 10, 11, 1, 2, 3, 7, 8, 9, 10, 11, 1, 2, 3, 7, 8, 9, 10, 11};
int[] array2 = { 2, 3, 4, 2, 3, 4, 2, 3, 4, 2, 3, 4, 2, 3, 4, 4, 2, 3, 4, 2, 3, 4, 2, 3, 4, 4, 2, 3, 4, 2, 3, 4, 2, 3, 4, 4, 2, 3, 4, 2, 3, 4, 2, 3, 4
, 4, 2, 3, 4, 2, 3, 4, 2, 3, 4, 2, 3, 4, 4, 2, 3, 4, 2, 3, 4, 2, 3, 4, 4, 2, 3, 4, 2, 3, 4, 2, 3, 4, 4, 2, 3, 4, 2, 3, 4, 2, 3, 4
, 4, 2, 3, 4, 2, 3, 4, 2, 3, 4, 2, 3, 4, 4, 2, 3, 4, 2, 3, 4, 2, 3, 4, 4, 2, 3, 4, 2, 3, 4, 2, 3, 4, 4, 2, 3, 4, 2, 3, 4, 2, 3, 4
, 4, 2, 3, 4, 2, 3, 4, 2, 3, 4, 2, 3, 4, 4, 2, 3, 4, 2, 3, 4, 2, 3, 4, 4, 2, 3, 4, 2, 3, 4, 2, 3, 4, 4, 2, 3, 4, 2, 3, 4, 2, 3, 4};
var intersect = array1.Intersect(array2);
foreach (int value in intersect)
Console.WriteLine(value);
DateTime dEnd = DateTime.Now;
Console.WriteLine("intersect : " + (dEnd - dStart).TotalMilliseconds);
List<int> distinct = new List<int>();
foreach (int i in array1)
if (!distinct.Contains(i))
Console.WriteLine("loop : " + (dEnd - dStart).TotalMilliseconds);