&&与entity framework查询中的条件之间的区别
entity framework查询中的条件与条件和两者之间的区别
代码1
我在查询中使用了两个where where条件
dbContext.Projects.Where(p=>p.ProjectId!=ProjectId).Where(p=>p.Name==Name) .SingleOrDefault();
代码2
我使用&&条件而不使用两个where条件
dbContext.Projects.Where(p=>p.ProjectId!=ProjectId && p.Name==Name).SingleOrDefault();
- code1和code2有什么区别????
两个查询都返回相同的值。 但我不知道差异。 请向我解释,哪一个更好。 为什么?
如果您在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
的记录 – 这与你在代码2中构建的&&表达式相同。
请参阅: https : //msdn.microsoft.com/de-de/library/bb534803%28v=vs.110%29.aspx
两个查询都相同。 但是Query 2
将为您提供更好的性能,因为&&
将帮助您进行短路 。 在第一个查询中,首先将产生结果并将其提供给第2个where
子句,然后它将根据输入评估结果。 如果您需要更多信息,请告诉我。