我可以将以下两个 linq 查询合并为一个查询以加快速度吗?
第一个,搜索并执行分页
Products.Data = db.Products.Where(x => x.ProductCode.Contains(search) ||
x.Name.Contains(search) ||
x.Description.Contains(search) ||
x.DescriptionExtra.Contains(search) ||
SqlFunctions.StringConvert(x.Price).Contains(search) ||
SqlFunctions.StringConvert(x.PriceOffer).Contains(search) ||
SqlFunctions.StringConvert(x.FinalPrice).Contains(search) ||
SqlFunctions.StringConvert(x.FinalPriceOffer).Contains(search))
.OrderBy(p => p.ProductID)
.Skip(PageSize * (page - 1))
.Take(PageSize).ToList();
而第二个计算过滤结果的总数。
int count = db.Products.Where(x => x.ProductCode.Contains(search) ||
x.Name.Contains(search) ||
x.Description.Contains(search) ||
x.DescriptionExtra.Contains(search) ||
SqlFunctions.StringConvert(x.Price).Contains(search) ||
SqlFunctions.StringConvert(x.PriceOffer).Contains(search) ||
SqlFunctions.StringConvert(x.FinalPrice).Contains(search) ||
SqlFunctions.StringConvert(x.FinalPriceOffer).Contains(search))
.Count();
最佳答案
摆脱低效得离谱的转化。
SqlFunctions.StringConvert(x.Price).Contains(search) ||
不可能使用索引、全表扫描和转换 - 这已经很糟糕了。
并确保您拥有所有索引。
您无能为力。
关于c# - 我怎样才能加快这些 linq 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35899972/