使用LINQ或不使用Linq哪个是更好的实体框架查询

时间:2019-06-22 19:53:45

标签: c# entity-framework linq

有两种方法可以从数据库中获取数据。

查询1:

var Q = (from c in ctx.customers 
         where c.id = 10
         select new
                {
                     c.id,
                     c.Name,
                }).ToList();

查询2:

var Q = (from c in ctx.customers
         select new 
                {
                    c.id,
                    c.Name,
                }).ToList().Where(x => x.id = 10);

我想知道对于许多记录来说哪个更快,更好。请同时列出两者的优点和缺点。也有其他类似的查询。

1 个答案:

答案 0 :(得分:1)

如果您使用的是语法,则两者是相同的。

如果您要询问第二个中的多余where子句,第一个更好且更快。因为它会构建整个查询,然后仅向数据库触发一个查询。但是在第二个列表中,一旦您到达第一个ToList,它将触发对数据库的查询并获取所有记录,因为此后将应用过滤器。

LINQ通常会构建您的查询,并且不会执行数据库中的每个语句。它构建您的查询并返回一个IQueryable。在添加条件,排序,选择语句到IQueryable时,它仍将返回IQueryable。不会执行任何查询。一旦使用了实际上从数据库获取记录的方法,作为所有语句的结果而构建的Iqueryable最终将被执行,并从数据库返回记录。 ToLIst是这种在DB中执行查询的方法之一。 ToArray,First,Single是实际上将执行对数据库查询的更多示例。