&&与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(); 

  • 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的记录 – 这与你在代码2中构建的&&表达式相同。

请参阅: https : //msdn.microsoft.com/de-de/library/bb534803%28v=vs.110%29.aspx

两个查询都相同。 但是Query 2将为您提供更好的性能,因为&&将帮助您进行短路 。 在第一个查询中,首先将产生结果并将其提供给第2个where子句,然后它将根据输入评估结果。 如果您需要更多信息,请告诉我。