Разница между & & и условием 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
предложение, а затем он будет оценивать результат на основе входных данных. Дайте мне знать, если вам понадобится больше информации.