Разница между & & и условием where в запросе entity framework

разница между и условием и двумя, где условие в entity framework query

код 1

у меня есть два условия where в моем запросе

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

код 2

у меня есть использование & & условие без использования двух, где условие

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

  • в чем разница между code1 и code2????

оба запроса возвращают одно и то же значение. но я не знаю разницы. Пожалуйста, объясните мне, какая из них лучше. и почему?

3 ответов


Если вы откроете свой запрос в LinqPad вы увидите, что оба запроса

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

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

приведет к обоим

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

нет никакой разницы ни в производительности, ни в структуре SQL-запроса.


из документации

возвращаемое значение:

IEnumerable, который содержит элементы из входной последовательности, которая удовлетворите условие.

Итак, второй where будет применяться только к записям surviging первый where - который идентичен выражению&&, которое вы построили в коде 2.

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


оба запроса одинаковы. Но!--0--> даст вам лучшую производительность, как && поможет вам в короткое замыкание. В первом запросе first where даст результат, и это будет дано 2nd where предложение, а затем он будет оценивать результат на основе входных данных. Дайте мне знать, если вам понадобится больше информации.