linq GroupBy的另一种方法是提高查询速度

时间:2017-01-07 05:44:22

标签: c# asp.net sql-server linq group-by

我有一些产品类别可以继承到更高的等级(在我的项目中,我有最高4年级)。例如(1)Digital_Product-> (2)Mobile-> (3)Android-> (4)索尼

我想从每个根类别(1级)中选择2个最新产品。我使用下面的查询,但它在1800毫秒处理。问题是groupBy查询。当我删除Groupby时,它在100ms内处理。

        IEnumerable<Db.Article> _List = uow.ArticleRepository.Get().Where(x =>
                            x.ArticlePropertyValues.Any(c => (_Status == "All" || c.ArticleProperty.Key == _Status))
                            && x.IsActive == true
                            && x.IsDeleted == false
                            && (_Type == -2 || x.ArticleCategory.TypeID == _Type)
                             ).GroupBy(p => p.ArticleCategory.ParentID == -1 ?
                                            p.ArticleCategory.ID :
                                            (p.ArticleCategory.ArticleCategory1.ParentID == -1 ? p.ArticleCategory.ArticleCategory1.ID :
                                            (p.ArticleCategory.ArticleCategory1.ArticleCategory1.ParentID == -1 ?
                                            p.ArticleCategory.ArticleCategory1.ArticleCategory1.ID :
                                            p.ArticleCategory.ArticleCategory1.ArticleCategory1.ParentID))
                                            ).SelectMany(p => p.OrderByDescending(x => x.ID).Take(2));

ParentID不是外来ID,数据库中没有使用索引。

0 个答案:

没有答案