[英]faster take n record in linq
请参阅此查询
return ContextDb.TestTbl.AsNoTracking().Where(x =>
x.Field1 == newsPaperGroupId).OrderByDescending(x => x.ShowDateTime).Take(count).ToList();
它获取所有记录然后取n条记录吗?
有没有更快的方法来执行此查询?
LINQ使用延迟执行 ,这意味着它不会立即检索结果-直到您调用ToList()
, Single()
, Count()
类的某些方法,或者使用foreach
循环遍历查询等之后才可以。
如果您的查询看起来像这样,那么在考虑count
之前,它实际上是在获取Field1 == newsPaperGroupId
所有记录。
return ContextDb.TestTbl.AsNoTracking()
.Where(x => x.Field1 == newsPaperGroupId)
.OrderByDescending(x => x.ShowDateTime)
.ToList()
.Take(count);
如果看起来像这样,那么它将在应用过滤器或限制获取的记录数之前抢占TestTbl
(库)中的所有内容。
return ContextDb.TestTbl.AsNoTracking()
.ToList()
.Where(x => x.Field1 == newsPaperGroupId)
.OrderByDescending(x => x.ShowDateTime)
.Take(count);
但是,您所拥有的看起来不错。 在您应用过滤器并限制了要检索的记录数之前,它不会检索实际数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.