using System.Diagnostics;
using System.Collections.Generic;
public static string[] BuildStringSequence(Random rnd, int size)
var result = new string[size];
var matchingsPercent = size * 10;
for (var i = 0; i < size; i++)
result[i] = rnd.Next(matchingsPercent).ToString();
public static void Main(string[] args)
var first = BuildStringSequence(new Random(1), 7000);
var second = BuildStringSequence(new Random(2), 7000);
var stopWatch = new Stopwatch();
var matchings = AlgorithmToImprove(first, second);
var ts = stopWatch.Elapsed;
Console.WriteLine(matchings.Length);
Console.WriteLine(ts.TotalMilliseconds);
private static string[] AlgorithmToImprove(IEnumerable<string> first, IEnumerable<string> second)
return first.Where(x => second.Any(y => y == x)).Distinct().ToArray();