While developing any kind of web/windows application we come across a point where we are supposed to filter records based on some criteria from bunch of data. And to define logic we may use LINQ query or FOREACH or FOR looping structure without considering the amount of data and execution time for obtaining result set.
Let’s consider that we developing a utility application/business logic which processes data. Below is demo application to check execution time of LINQ queries, FOREACH and FOR loop.
Here I am generating ONE CRORE random numbers between 0 to 100 and adding it to list and calculating occurrences of “20” number from the random number generated list.
In above example we used four different methods to calculate occurrences of number “20” in random number list:
And from the above output we can see that LINQ query creates more overhead with compared to looping controls rather FOREACH loop.
Hence, lesser execution time more faster and optimized output.
Let’s consider that we developing a utility application/business logic which processes data. Below is demo application to check execution time of LINQ queries, FOREACH and FOR loop.
Here I am generating ONE CRORE random numbers between 0 to 100 and adding it to list and calculating occurrences of “20” number from the random number generated list.
static void Main(string[] args)
{
//Generating ONE CRORE random numbers
List<int> data = new List<int>();
System.Random rnd = new Random();
for (int i = 0; i <= 10000000; i++)
{
data.Add(rnd.Next(100));
}
//Filtering by different methods
Console.WriteLine("Execution time using different methods." + Environment.NewLine);
System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
int count = 0;
//------------------------------------------------
//Method - 1: Using LINQ Query
sw.Start();
count = (from d in data
where d == 20
select d).Count();
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds + " milliseconds - Using LINQ query");
sw.Reset();
//------------------------------------------------
//Method - 2: Using LINQ lambda expression
sw.Start();
count = data.Where(c => c == 20).Count();
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds + " milliseconds - Using LINQ Lambda expression");
sw.Reset();
//------------------------------------------------
//Method - 3: Using FOR loop
count = 0;
sw.Start();
for (int i = 0; i < data.Count; i++)
if (data[i] == 20)
count++;
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds + " milliseconds - Using For loop");
sw.Reset();
//------------------------------------------------
//Method - 4: Using FOREACH loop
count = 0;
sw.Start();
foreach (var item in data)
if (item == 20)
count++;
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds + " milliseconds - Using Foreach loop");
Console.Read();
}
In above example we used four different methods to calculate occurrences of number “20” in random number list:
- Method – 1: Using LINQ query
- Method – 2: Using LINQ lambda expression
- Method – 3: Using FOR loop
- Method – 4: Using FOREACH loop
And from the above output we can see that LINQ query creates more overhead with compared to looping controls rather FOREACH loop.
Hence, lesser execution time more faster and optimized output.



