Entity Framework 两种类型的查询

Entity Framework two types of queries

这些查询有什么区别?他们的名字是什么?我什么时候应该使用哪个?

var queryLondonCustomers = from cust in customers
                           where cust.City == "London"
                           select cust;


using (var context = new BloggingContext())
{
    var blogs = context.Blogs
        .Where(b => b.Url.Contains("dotnet"))
        .ToList();
}

好吧,它们是同一件事的两个完全不同的查询。

但是如果你只是问语法差异的话,前者的语法在编译时会被解释成后者的语法。因此,任何两个 仅在语法 (而不是实际查询功能)上不同的查询在所有意图和目的上都是相同的。

例如,这个:

from cust in customers
where cust.City == "London"
select cust

同理:

customers.Where(cust => cust.City == "London")

可能 编译器可能会产生一些不同的东西,例如还附加一个 .Select(),它实际上并没有做任何有趣的事情。但关键是前者的“LINQ语法”并没有做任何特别的事情,它只是后者的一种语法上不同的表达方式。