Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Linq query or Lambda expression?

Tags:

c#

lambda

linq

I'm using Entity Framework in my ASP.NET, C#, Web Application. If I need to select a record from DataBase (in Data Access Layer), which method should I use? Linq query or a Lambda Expression?

Eg:-

//Linq        
var result = from a in db.myTable.Take(1) where a.Id == varId  select a;
return result.First();

//Lambda
return db.myTable.FirstOrDefault(a => a.Id == varId);

Is there any preferred way in this scenario or any advantage over the other?

like image 396
Nalaka526 Avatar asked Apr 24 '13 07:04

Nalaka526


3 Answers

Linq query syntax is just a syntax sugar for expression methods. Any Linq query compiled into expression methods. Btw your first query:

var query = from a in db.myTable.Take(1) 
            where a.Id == varId  
            select a;
return query.First();

Is equivalent to

return db.myTable.Take(1).Where(a => a.Id == varId).First();
like image 105
Sergey Berezovskiy Avatar answered Oct 25 '22 08:10

Sergey Berezovskiy


Both of your tries use Linq.

The first takes one record and checks if the id matches.

The second takes the first record where the id matches.

That's a difference.

like image 24
nvoigt Avatar answered Oct 25 '22 09:10

nvoigt


Query Expression compiles into Method Expression (Lambda expression), so there shouldn't be any difference, In your code though you are accessing First and FirstOrDefault which would behave differently.

See: Query Syntax and Method Syntax in LINQ (C#)

and LINQ Query Expressions (C# Programming Guide)

At compile time, query expressions are converted to Standard Query Operator method calls according to the rules set forth in the C# specification. Any query that can be expressed by using query syntax can also be expressed by using method syntax. However, in most cases query syntax is more readable and concise.

like image 39
Habib Avatar answered Oct 25 '22 08:10

Habib