Pages

Wednesday 3 April 2013

LINQ(LANQUAGE INTEGRATED QUERY)

LINQ is a new feature available from .net version 3.0 and above. It called as LANQUAGE INTEGRATED QUERY there are different flavors of LINQ available like LINQ TO SQL, LINQ TO XML etc.. Taking advantage of LINQ you can query the collection as if you are querying from a database.
LINQ offers a compact, expressive, and intelligible syntax for manipulating data. The real value of LINQ comes from its ability to apply the same query to an SQL database, a DataSet, an array of objects in memory and to many other types of data as well.

Queries Syntax

   from <<element>> in <<collection>>
   where <<expression>>
   select <<expression>>

Lambda Expressions

While you are working with LINQ, you will find some "weird syntax" in the form x => y.
Advantages
  • It is a cleaner and type safety.
  • Data is easy to setup and use
  • It can be debugged easily.
  • Quick turnaround for development
  • Queries can be dynamically
  • Tables are automatically created into class
  • Columns are automatically created into properties
  • Relationship are automatically appeared to classes
  • Lambda expressions are awesome
  • It is checked by the compiler instead of at runtime
  • It can be used against any datatype - it isn't limited to relational databases, you can also use it against XML, regular objects.
  • It can able to query not just tables in a relational database but also text files and XML files.
Disadvantages
  • No clear outline for Tiers
  • No good way of view permissions
  • Small data sets will take longer to build the query than execute
  • There is an overhead for creating queries
  • When queries are moved from sql to application side, joins are very slow
  • DBML concurrency issues
  • Hard to understand advance queries using Expressions
  • Can be hard to understand when you first start out with it
  • Deferred execution can separate errors from their causes (in terms of time)
  • Out-of-process LINQ (e.g. LINQ to SQL) will always be a somewhat leaky abstraction - you need to know what works and what doesn't, essentially
  • LINQ sends the entire query to the DB hence takes much network traffic but the stored procedures sends only argument and the stored procedure name. It will become really bad if the queries are very complex. 
  • Performance is degraded if we don't write the linq query correctly.
  • If you need to make changes to the way you do data access, you need to recompile, version, and redeploy your assembly.
  • No clear outline for Tiers
  • No good way of view permissions
  • Small data sets will take longer to build the query than execute
  • There is an overhead for creating queries\
  • When queries are moved from sql to application side, joins are very slow
  • DBML concurrency issues
  • Hard to understand advance queries using Expressions
Disadvantage of LINQ over stored procedures
The disadvantage with LINQ is, it is not a precompiled statement where as stored procedures are precompiled. In case of LINQ the queries need to be compile before the execution. So according to this, I can say stored procedures are faster in performance as compared to LINQ.
Example
int[] digits = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
       
var num =from n in digits where n >= 6 select n;
Response.Write("Numbers < 5:");
foreach (var x in num)
{
     Response.Write(x);
}

No comments:

Post a Comment