[英]Difference between && and where condition in entity framework query
代码 1
我在查询中使用了两个 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();
这两个查询都返回相同的值。 但我不知道有什么区别。 请给我解释一下,哪个更好。 为什么?
如果您在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
将仅应用于第一个where
的记录 - 这与您在代码 2 中构建的 && 表达式相同。
请参阅: https : //msdn.microsoft.com/de-de/library/bb534803%28v=vs.110%29.aspx
两个查询是相同的。 但是Query 2
会给你更好的性能,因为&&
会帮助你解决短路问题。 在第一个查询中,首先where
将产生结果,并将其提供给第二个where
子句,然后它将根据输入评估结果。 如果您需要更多信息,请告诉我。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.