繁体   English   中英

实体框架查询中&&和where条件的区别

[英]Difference between && and where condition in entity framework query

实体框架查询中and条件和两个where条件的区别

代码 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();

  • code1code2 有什么区别???

这两个查询都返回相同的值。 但我不知道有什么区别。 请给我解释一下,哪个更好。 为什么?

如果您在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM