static void Main(string[] args) { List <PerformanceTest> SearchMethod = new List <PerformanceTest>(); SearchMethod.Add(new QueryLinqWhere()); SearchMethod.Add(new QueryLinqContain()); SearchMethod.Add(new QueryLinqContainParallel()); SearchMethod.Add(new QueryLinqJoin()); List <Dado> original = new List <Dado>(); int total = 100000; Console.WriteLine("Generating Data"); for (int i = 0; i < total; i++) { original.Add(new Dado() { ID = i, PayLoad = "teste" }); } Random rnd = new Random(); List <List <Int32> > queryList = new List <List <int> >(); Console.WriteLine("Generating IDs for Query"); for (int i = 0; i < 10; i++) { queryList.Add(new List <int>()); for (int j = 0; j < (total / 100) * (i + 1); j++) { queryList[i].Add(rnd.Next(total)); } queryList[i] = queryList[i].Distinct().ToList(); } Console.WriteLine("Setup Method"); SearchMethod.ForEach(x => { x.Setup(original.ToList()); }); Console.WriteLine("Performing Tests"); SearchMethod.ForEach(x => { Console.WriteLine($"Performing: {x.ToString().Split('+')[1]}"); queryList.ForEach(z => { x.PerformQuery(z); }); }); PerformanceTest.PrintCSV(SearchMethod); Console.Write("Enter para continuar..."); Console.ReadLine(); }