This discussion I will try to provide some common LINQ statement
and the equivalent LAMDA expression. This is purely personal preference to
choose LINQ or Lamda. I am not going to describe which one is the best way
considering performance as parameter. What I noticed both emit the same IL code
after compilation. I used Entity framework 5.0 and Northwind database for this
sample.
Retrieve all records
LINQ
from c in dbContext.Categories
select c;
LAMDA
dbContext.Categories.Select(c
=> c);
Specific fields
LINQ
from c in dbContext.Categories
select new { c.CategoryName,
c.CategoryID };
LAMDA
dbContext.Categories.Select(c
=> new {
c.CategoryName, c.CategoryID })
Orderby asc
LINQ
from c in dbContext.Categories
orderby c.CategoryName
select c;
LAMDA
dbContext.Categories.OrderBy(c
=> c.CategoryName);
Orderby dsc
LINQ
from c in dbContext.Categories
orderby c.CategoryName descending
select c;
LAMDA
dbContext.Categories.OrderByDescending(c => c.CategoryName);
Multiple orderby
LINQ
from c in dbContext.Categories
orderby c.CategoryName , c.CategoryID
select c;
LAMDA
dbContext.Categories.OrderBy(c => c.CategoryName).ThenBy(c => c.CategoryID);
Orderby asc and dec
LINQ
from c in dbContext.Categories
orderby c.CategoryName, c.CategoryID descending
select c;
LAMDA
dbContext.Categories.OrderBy(c => c.CategoryName)
.ThenByDescending(c => c.CategoryID);
Filter
LINQ
from c in dbContext.Categories
where c.CategoryID.Equals(1)
select c;
LAMDA
dbContext.Categories.Where(c
=> c.CategoryID.Equals(1));
Filter with multiple
criteria
LINQ
from c in dbContext.Categories
where c.CategoryID.Equals(1) && c.CategoryName.StartsWith("A")
select c;
LAMDA
dbContext.Categories.Where(c
=> c.CategoryID.Equals(1) &&
c.CategoryName.StartsWith("A"));
Group By
LINQ
from c in dbContext.Categories
group c by c.CategoryName into g
select g;
LAMDA
dbContext.Categories.GroupBy(c
=> c.CategoryName)
Multiple group By
LINQ
from c in dbContext.Categories
group c by new { c.CategoryID, c.CategoryName } into g
select g;
LAMDA
dbContext.Categories.GroupBy(c
=> new {
c.CategoryID, c.CategoryName })
Record Count
LINQ
(from c in dbContext.Categories
where c.CategoryName.StartsWith("B")
select
c).Count();
LAMDA
dbContext.Categories.Count(c
=> c.CategoryName.StartsWith("B"));
Join
LINQ
from c in dbContext.Categories
join p in dbContext.Products1 on c.CategoryID equals p.CategoryID
select new
{
CategoryName,
p.ProductID,
p.ProductName
};
LAMDA
dbContext.Categories.Join(dbContext.Products1, c => c.CategoryID, P
=>
P.CategoryID,((c,p)=>new {c.CategoryName,p.ProductID,p.ProductName}));