.NET Tutorials, Forums, Interview Questions And Answers
Welcome :Guest
 
Sign In
Register
 
Win Surprise Gifts!!!
Congratulations!!!


Top 5 Contributors of the Month
david stephan

Home >> Articles >> LINQ >> Post New Resource Bookmark and Share   

 Subscribe to Articles

Complied Queries in LINQ

Posted By:Dhananjay Kumar       Posted Date: January 06, 2011    Points: 75    Category: LINQ    URL: http://www.dotnetspark.com  

Complied Queries in LINQ. There may be scenario where we need to execute a particular query many times and repeatedly. LINQ allows us to make this task very easy by enabling us to create a query and make it complied always. We call this type of query as complied query.
 

Complied Queries in LINQ

There may be scenario where we need to execute a particular query many times and repeatedly. LINQ allows us to make this task very easy by enabling us to create a query and make it complied always.  We call this type of query as complied query.

Benefit of Compiled Query

1.  Query does need to compile each time so execution of query is fast.

2.  Query is compiled once and can be used any number of time.

3.  Query does need to be recompiled even if the parameter of query is being changed.

Steps to create Complied Query

1.  Create a static class

2.  Add namespace System.Data.Linq.

3.  Use CompliedQuery class to create complied LINQ query.

Let us say we want to create a compiled query to retrieve the entire Person from School database.

1.  Create Static class



2.  Define static query in the class



We can pass as many parameters in Func 
1.  First parameter is always name of the DataContext class created by LINQ to SQL. In our example name of DataContext class is DataClass1DataContext.

2.  Last parameter is the result parameter. This says the return type of the result of the query.  This is always a generic IQueryable.  In our example it is IQueryable


3.  In between first and last parameter we can have parameter to apply against the query.





4.  Keyword to create complied query is



Let us write a complied query to fetch all the Persons from DataContext



And we will call this compiled query as below; MyCompliedQueries is name of the static class.



Program.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Linq ; 
 
namespace ConsoleApplication5
  {
    class Program
        {
            static void Main(string[] args)
                {
                    DataClasses1DataContext context = new DataClasses1DataContext();
                    var result = MyCompliedQueries.CompliedQueryForPesron(context);
                    foreach (var r in result)
                    {
                        Console.WriteLine(r.FirstName + r.LastName);
                    }
 
                    Console.ReadKey(true);
                    
                }
        }
 
    static class MyCompliedQueries
        {
               public static Func>
               CompliedQueryForPesron = CompiledQuery.Compile(
                                          (DataClasses1DataContext context)=>
                                              from c in context.Persons select c );
 
         
        }
}



Output



Now if we want to pass some parameter in compiled query



And we will call this query as below,



Program.cs


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Linq ; 
 
namespace ConsoleApplication5
  {
    class Program
        {
            static void Main(string[] args)
                {
                    DataClasses1DataContext context = new DataClasses1DataContext();
                    
                    var result1 = MyCompliedQueries.CompiledQueryWithwhere(context, 9);
                    foreach (var r in result1)
                    {
                        Console.WriteLine(r.FirstName + r.LastName);
                    }
 
                    Console.ReadKey(true);
                }
        }
 
    static class MyCompliedQueries
        {
               
               public static Func>
                 CompiledQueryWithwhere = CompiledQuery.Compile(
                                           (DataClasses1DataContext context,
                                               int PersonId) =>
                                               from c in context.Persons
                                               where c.PersonID == PersonId select c
                                              );
 
         
        }
}


Output



 Subscribe to Articles

     

Further Readings:

Responses

No response found. Be the first to respond this post

Post Comment

You must Sign In To post reply
Find More Articles on C#, ASP.Net, Vb.Net, SQL Server and more Here

Hall of Fame    Twitter   Terms of Service    Privacy Policy    Contact Us    Archives   Tell A Friend