c# - 我怎样才能加快这些 linq 查询?

标签 c# linq

我可以将以下两个 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/

相关文章:

c# - 将经过身份验证的用户发送到 WCF 应用程序

c# - 如何将 OpenPop.NET MailMessage 转换为 System.Net.Mail.MailMessage?

c# - 有没有办法实现对 ref 结构起作用的 TryGet 函数?

c# - 使用 LINQ 对列表中的项目进行排名

c# - 使用linq读取xml文件

linq - ERROR 静态方法需要空实例,非静态方法需要非空实例

C# 将 System.ConsoleColor 转换为 System.Drawing.Color

c# - 在受信任的发布者商店中找不到证书

c# - 实体/LINQ/ASP.NET : ASPxGridView Adding Rules

c# - Linq to sql查询: how to prevent duplication of code