我在数据库中有大量数据。我想过滤结果并获得特定数量的产品
例如:PageSize = 100。我想在每个页面上获得100个产品,产品的描述包含字符串“Laptop”
Products = repository.Products
.OrderByDescending(p => p.Date)
.Where(x=>x.Description.Contains("%Laptop%")
.Skip((page - 1) * PageSize)
.Take(PageSize);
此查询超时,因为查询在检索前100个产品之前过滤了大量结果
但如果我写
Products = repository.Products
.Skip((page - 1) * PageSize)
.Take(PageSize)
.OrderByDescending(p => p.Date)
.Where(x=>x.Description.Contains("%Laptop%");
然后第1页没有100个产品,因为查询首先重试100个产品然后过滤
如何检索100个产品(包含字符串“Laptop”)并且没有超时错误?
答案 0 :(得分:2)
Where
,然后是下订单,之后再去。
像这样:
Products = repository.Products
.Where(x=>x.Description.Contains("Laptop");
.OrderByDescending(p => p.Date)
.Skip((page - 1) * PageSize)
.Take(PageSize)
注意,包含变为like %input%
,因此无需用%
s包围它;)