示例#1
0
        public List <_QuestionInfo> GetListBySortType(HomeSortTypeEnum sortType, int totalCount, string sortConfig, Paging page)
        {
            string        sqlCondition = string.Empty;
            StringBuilder orderBy      = new StringBuilder();

            if (sortConfig.IsNullOrEmpty())
            {
                orderBy.Append("a.IsTop desc,a.IsJinghua desc,a.PVCount desc,");//默认排序
            }
            else
            {
                List <string> sortConfigs = sortConfig.Split('+').ToList();
                string        orderType   = sortConfigs.Contains("7") ? "asc" : "desc";
                sortConfigs.ForEach(sortItem =>
                {
                    switch (sortItem)
                    {
                    //1置顶 2热门 3精华 4浏览量 5创建时间
                    case "1": orderBy.AppendFormat(" a.IsTop {0},", orderType); break;

                    case "2": orderBy.AppendFormat(" a.IsRemen {0},", orderType); break;

                    case "3": orderBy.AppendFormat(" a.IsJinghua {0},", orderType); break;

                    case "4": orderBy.AppendFormat(" a.PVCount {0},", orderType); break;

                    case "5": orderBy.AppendFormat(" a.CreateTime {0},", orderType); break;
                    }
                });
            }
            orderBy.Remove(orderBy.Length - 1, 1);
            switch (sortType)
            {
            case HomeSortTypeEnum.Sort_JinHua:
                //--精华
                sqlCondition = " and a.IsJinghua=1 ";
                break;

            case HomeSortTypeEnum.Sort_Hot:
                //--热门
                sqlCondition = " and a.IsRemen=1 ";
                break;

            case HomeSortTypeEnum.Sort_Top:
                // --置顶
                sqlCondition = " and a.IsTop=1 ";
                break;

            case HomeSortTypeEnum.Sort_New:
                //-- 新贴(7天内的所有帖子)
                sqlCondition = " and a.CreateTime>='{0}' ".FormatWith(DateTime.Now.AddDays(-ConfigHelper.AppSettings("NewTieZiDays").ToInt32()).ToString(1));
                orderBy.Clear().Append(" a.CreateTime desc ");
                break;

            case HomeSortTypeEnum.Sort_NoComment:
                //--待回复(即评论数为0的)
                sqlCondition = " and (select count(1) from Comment where MainID=a.QuestionId and MainType=1 and IsDelete=0)=0 ";
                orderBy.Clear().Append(" a.CreateTime desc ");
                break;

            default: sqlCondition = " and 1=1 "; break;
            }
            DataSet ds = dal.GetListBySortType(orderBy.ToString(), sqlCondition, totalCount, page.StartIndex, page.EndIndex);

            page.RecordCount = ds.Tables[0].Rows[0][0].ToString().ToInt32();
            return(ModelConvertHelper <_QuestionInfo> .ConvertToList(ds.Tables[1]));
        }