0

当我使用实体框架时,如果我对终端没有错,我可以使用 linq 到实体和扩展方法。

我将此查询的实体命名为 linq:

var myResult = (from c in myCOntext.Customers
                where c.ID >= 35
                select c).List();

我以这种方式命名扩展方法:

List<Customers> lstResult = myContext.Customers.Where(c=>c.ID >= 35).ToList();

在这两种情况下,我得到相同的结果,但我想知道一种方法是否比另一种更有效,因为在这两种情况下,EF 都必须将查询转换为 T-SQL。

谢谢。

4

1 回答 1

2

完全一样。声明性查询语法(您的第一个代码片段)在编译时被转换为调用标准查询运算符/扩展方法的方法(您的第二个代码片段)(此处提供简要参考)。

最后编译的代码是相同的,并且此代码(LINQ to Entities)在运行时执行转换为 SQL。选择片段一或两个只是个人品味和偏好的问题。但是,有时您只能使用扩展方法语法,因为并非所有支持的方法在查询语法中都有对应的方法。

于 2013-07-31T16:25:35.960 回答