Friday, May 3, 2013

Into and Let in LINQ ( Let vs. Into)

Into

The Into keyword allows creating a temporary variable to store the results of a group, join, or select clause into a new variable.
var em = from e in emp
                      group e by new{ e.DeptId}
                          into gEmp
                          where gEmp.Count() > 1
                       select new { gEmp.Key.DeptId, salary = gEmp.Sum(t => t.Salary) };


In the above query, after applying into on grouping, it creates a IGrouping type gEmp variable, which is used to apply the next filter.
Note: Into is used when you want to perform an operation on grouped data.

Let

The Let keyword allows storing the results of a query which can be used in a subsequent query; i.e., it creates a new variable and initializes it with the result of the expression you supply.


var em = from e in emp
                     group e by new { e.Salary, e.Id }
                         into gEmp
                         let avgsal = (gEmp.Sum(t => t.Salary) / gEmp.Count())
                         where gEmp.Key.Salary == avgsal
                         select new { gEmp.Key.Salary, gEmp.Key.Id };


The above query is used to find out employee(s) having salary more than avgSalary. The Let keyword allows to create a new variable avgsal that is used in further operations.

Let vs. Into

Most people find it difficult to decide which one to use when designing a LINQ query.
  • Into – Hides the previous variable when used in a query, as you see in the above example. Which means its hides the previous range variable and creates a temporary range variable which you can use in further operations.
  • Let – Doesn’t hide the previous variable and creates a new variable. Which means you create a new variable and you can also use the previous variable, so you can use both in further operations.

No comments:

Post a Comment