Difference between && and where condition in entity framework query

11,673

Solution 1

If you open your query in LinqPad you will see that both queries

dbContext.Projects.Where(p=>p.ProjectId!=ProjectId).Where(p=>p.Name==Name)

dbContext.Projects.Where(p=>p.ProjectId!=ProjectId && p.Name==Name);

will result both in

SELECT [...]
FROM [...]
WHERE p.ProjectId <> someId AND p.Name = 'something'

There is no difference neither in performance nor in SQL query structure.

Solution 2

From the documentation

Return value:

An IEnumerable that contains elements from the input sequence that satisfy the condition.

So the second where will only be applied to the records surviging the first where - which is identical to the && expression you built in code 2.

See: https://msdn.microsoft.com/de-de/library/bb534803%28v=vs.110%29.aspx

Solution 3

Both queries are same. But Query 2 will give you better performance, as && will help you in short-circuit. In the first query, first where will yield the result and that will be given to 2nd where clause and then it will evaluate result based on the input. Let me know if you need more info.

Share:
11,673
Ramesh Rajendran
Author by

Ramesh Rajendran

Technologies : HTML CSS Asp.Net MVC Web Api C# Angular 1-7 Unit Test (Front End &amp; Back End) I am currently working in L&amp;T . Read my blog C# DotNet Solutions.

Updated on July 30, 2022

Comments

  • Ramesh Rajendran
    Ramesh Rajendran almost 2 years

    Difference between and condition and two where condition in entity framework query

    Code 1

    I have using two where condition in my query

     dbContext.Projects.Where(p=>p.ProjectId!=ProjectId).Where(p=>p.Name==Name)
     .SingleOrDefault();
    

    code 2

    I have using && condition without using two where condition

      dbContext.Projects.Where(p=>p.ProjectId!=ProjectId &&  
      p.Name==Name).SingleOrDefault();
    

    • What is the difference between code1 and code2????

    The both queries are return same value. but i don't know the differences. Please explain to me, which one is better. and why?