using System.Diagnostics; using System; using System.Linq; using System.Collections.Generic; public class Test { static string[][] GetRandomJaggedArray(int numberOfArrays, int numberOfElements) { string[][] temp = new string[numberOfArrays][]; for (int i = 0; i < numberOfArrays; i++) { temp[i] = new string[numberOfElements]; for (int i2 = 0; i2 < temp.Length; i2++) temp[i][i2] = Guid.NewGuid().ToString(); } return temp; } static TimeSpan getElementsAtIndexLINQ(string[][] listOfArrays, int index, int count) { Stopwatch s = new Stopwatch(); List myListOfStrings; s.Start(); for (int i = 0; i < count; i++) myListOfStrings = listOfArrays.Select(a => a[index]).ToList(); s.Stop(); return s.Elapsed; } static TimeSpan getElementsAtIndexFOR(string[][] listOfArrays, int index, int count) { Stopwatch s = new Stopwatch(); s.Start(); for (int i2 = 0; i2 < count; i2++ ) { List myListOfStrings = new List(); for (int i = 0; i < listOfArrays.Length; i++) myListOfStrings.Add(listOfArrays[i][index]); } s.Stop(); return s.Elapsed; } static void Main(string[] args) { string[][] test1 = GetRandomJaggedArray(100, 1000); string[][] test2 = GetRandomJaggedArray(100, 1000); getElementsAtIndexFOR(test2, 1, 1); TimeSpan t2 = getElementsAtIndexFOR(test2, 1, 10); getElementsAtIndexLINQ(test1, 1, 1); TimeSpan t1 = getElementsAtIndexLINQ(test1, 1, 10); Console.WriteLine("Linq method took {0} ticks to execute", t1.Ticks); Console.WriteLine("For method took {0} ticks to execute", t2.Ticks); } }