我想知道接下来的事情:
我可以使用 LINQ To Entities 查询我的数据库,如下所示:
GetAll().Where(
      x => x.SomeProperty == 'Yes'
      && x.SomeOtherProperty == 'No')
.ToList();
虽然我看到我的一些同事更改了这两个 WHERE 子句,如下所示:
GetAll().Where(x => x.SomeProperty == 'Yes')
      .Where(x.SomeOtherProperty == 'No')
.ToList();
两个查询都应该产生相同的输出,但我想知道这两个查询中的一个是否有任何优点/缺点。例如,一种方法会产生较慢的数据库查询,还是会产生相同的 sql 查询?
Asa*_*din 10
我设置使用模型中的测试项目和上下文中描述本文以及记录的SQL两个不同的查询,按照你的问题的模式。我提出的问题是:
db.Blogs
    .Where(b => b.BlogId == 0)
    .Where(b => b.Name == "Foo");
和
db.Blogs
    .Where(b => b.BlogId == 0 && b.Name == "Foo");
为两个查询生成的 SQL 是相同的:
SELECT 
    [Extent1].[BlogId] AS [BlogId], 
    [Extent1].[Name] AS [Name]
    FROM [dbo].[Blogs] AS [Extent1]
    WHERE (0 = [Extent1].[BlogId]) AND (N'Foo' = [Extent1].[Name])
所以看起来(至少对于像这样的简单情况),以一种或另一种方式没有显着的性能差异。我想您可能会争辩说,如果您使用多种Where方法,则表达式访问者需要更长的时间来检查您的树,但从长远来看,这可以忽略不计。