Internal of Deferred or Lazy Execution in LINQ

No.of Views581
Bookmarked0 times
Downloads 
Votes0
By  Dhananjay Kumar   On  10 Feb 2011 08:02:32
Tag : LINQ , General
In this article we will see how internally Deferred or lazy execution is implemented. Deferred Execution executes the query only when Loop starts. What I mean here is that, we iterate through the query variable to get the result.
emailbookmarkadd commentsprint

Images in this article missing? We recently lost them in a site migration. We're working to restore these as you read this. Should you need an image in an emergency, please contact us at info@codegain.com

 

Introduction

I have already posted about Deferred Execution here. In this post we will see how internally Deferred or lazy execution is implemented. Deferred Execution executes the query only when Loop starts. What I mean here is that, we iterate through the query variable to get the result.  

Image Loading

Here the result variable does not contain the actual result. To get the result, we may iterate through the result (query) variable in loop as many time as we want.  We do defer execution mainly when multiple values is being returned from the query.
Deferred execution can be avoided

1.    By returning single item from the query
2.    By converting the query in  .ToList().

Lazy evolution of deferred execution is executed using the yield operator in c# 3.0
In c# 3.0 it is implemented as below,

public static class Sequence
    {
        public static IEnumerable<T> Where<T>(this IEnumerable<T> source,
                                              Func<T, bool> predicate)
        {
            foreach (T element in source)
                if (predicate(element))
                    yield return element;
        }
    }

The main advantage of lazy evolution is if query is returning large result it will cached for better optimization.  So here execution is delayed until final query is ready to execute.

 
Sign Up to vote for this article
 
About Author
 
Dhananjay Kumar
Occupation-Software Engineer
Company-Infosys Technolgies,Pune
Member Type-Gold
Location-India
Joined date-20 Jul 2009
Home Page-http://dhananjaykumar.net/
Blog Page-http://dhananjaykumar.net/
Dhananjay Kumar is Microsoft MVP on connected system. He blogs at http://dhananjaykumar.net/ . You can follow him http://twitter.com/debugmode_/ and reach him at dhananjay.25july@gmail.com
 
 
Other popularSectionarticles
    In this article we will focus LINQ Remote and Local exaction such as This query executes on the server, Remote execution of query is default in LINQ, In Remote execution advantage of Databases index can be taken, Remote execution allows us to take the advantage of Database server engine, Remote execution allows us to only select particular rows from the table. This is very useful when we do have large amount of data in the server.
    Published Date : 07/Jan/2011
    In this article, we will see how to work with LINQ against IIS.
    Published Date : 10/Aug/2010
    how to create a XML tree using Functional Construction method of LINQ to XML.
    Published Date : 13/Apr/2010
    This article demonstrates how to use LINQ on DataTable, XML Data using LINQ to XML and SQL server data base using LINQ to SQL Classes.
    Published Date : 28/Jun/2010
    In this article we will focus, how to read CSV file using LINQ to CSVProvider.I hope we know read CSV file using StreamReader or any other readers in C#. But when we are use the LINQ to CSVProvider, and then we could get additional features to query data in LINQ as like Sql Query.
    Published Date : 01/Jan/2011
Comments
There is no comments for this articles.
Leave a Reply
Title:
Display Name:
Email:
(not display in page for the security purphase)
Website:
Message:
Please refresh your screen using Ctrl+F5
If you can't read this number refresh your screen
Please input the anti-spam code that you can read in the image.
^ Scroll to Top