有两种方法可以从数据库中获取数据。
查询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);
我想知道对于许多记录来说哪个更快,更好。请同时列出两者的优点和缺点。也有其他类似的查询。
答案 0 :(得分:1)
如果您使用的是语法,则两者是相同的。
如果您要询问第二个中的多余where子句,第一个更好且更快。因为它会构建整个查询,然后仅向数据库触发一个查询。但是在第二个列表中,一旦您到达第一个ToList,它将触发对数据库的查询并获取所有记录,因为此后将应用过滤器。
LINQ通常会构建您的查询,并且不会执行数据库中的每个语句。它构建您的查询并返回一个IQueryable。在添加条件,排序,选择语句到IQueryable时,它仍将返回IQueryable。不会执行任何查询。一旦使用了实际上从数据库获取记录的方法,作为所有语句的结果而构建的Iqueryable最终将被执行,并从数据库返回记录。 ToLIst是这种在DB中执行查询的方法之一。 ToArray,First,Single是实际上将执行对数据库查询的更多示例。