Reputation: 38683
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();
The both queries are return same value. but i don't know the differences. Please explain to me, which one is better. and why?
Upvotes: 7
Views: 15058
Reputation: 7045
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.
Upvotes: 1
Reputation: 7301
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.
Upvotes: 11
Reputation: 4859
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
Upvotes: 3