Exemplo n.º 1
0
 /// <summary>
 /// 获取筛选条件下的所有文章
 /// </summary>
 /// <param name="cateAlias"></param>
 /// <param name="pageIndex"></param>
 /// <param name="pageSize"></param>
 /// <param name="sortBy"></param>
 /// <param name="filtType"></param>
 /// <param name="keyword"></param>
 /// <returns></returns>
 public async Task<PostResult> GetPosts(string cateAlias, int pageIndex, int pageSize, SortBy sortBy = SortBy.Latest, FiltType filtType = FiltType.Content, string keyword = "")
 {
     var result = new PostResult();
     var query = await _posts.Collection.Find(x => x.IsActive).ToListAsync();
     if (!string.IsNullOrWhiteSpace(cateAlias))
     {
         query = query.Where(x => x.CategoryAlias.ToUpper() == cateAlias.ToUpper()).ToList();
     }
     if (!string.IsNullOrWhiteSpace(keyword))
     {
         if (filtType == FiltType.Title)
         {
             query = query.Where(x => x.Title.Contains(keyword)).ToList();
         }
         else if (filtType == FiltType.Label)
         {
             query = query.Where(x => x.Labels.Contains(keyword)).ToList();
         }
         else if (filtType == FiltType.Datetime)
         {
             DateTime dt;
             DateTime.TryParse(keyword, out dt);
             query = query.Where(x => x.CreateTime.Date == dt.Date).ToList();
         }
         else
         {
             query = query.Where(x => x.Content != null ? (x.Title.Contains(keyword) || x.Summary.Contains(keyword) || x.Content.Contains(keyword)) : (x.Title.Contains(keyword) || x.Summary.Contains(keyword))).ToList();
         }
     }
     result.PostCount = query.Count;
     if (sortBy == SortBy.Hotest)
     {
         query = query.OrderByDescending(x => x.ViewCount).ThenByDescending(x => x.CreateTime).ToList();
     }
     else
     {
         query = query.OrderByDescending(x => x.CreateTime).ToList();
     }
     result.PostList = query.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
     return result;
 }
Exemplo n.º 2
0
        /// <summary>
        /// 获取筛选条件下的所有文章
        /// </summary>
        /// <param name="cateAlias"></param>
        /// <param name="pageIndex"></param>
        /// <param name="pageSize"></param>
        /// <param name="sortBy"></param>
        /// <param name="filtType"></param>
        /// <param name="keyword"></param>
        /// <returns></returns>
        public async Task <PostResult> GetPosts(string cateAlias, int pageIndex, int pageSize, SortBy sortBy = SortBy.Latest, FiltType filtType = FiltType.Content, string keyword = "")
        {
            var result = new PostResult();
            var query  = await _posts.Collection.Find(x => x.IsActive).ToListAsync();

            if (!string.IsNullOrWhiteSpace(cateAlias))
            {
                query = query.Where(x => x.CategoryAlias.ToUpper() == cateAlias.ToUpper()).ToList();
            }
            if (!string.IsNullOrWhiteSpace(keyword))
            {
                if (filtType == FiltType.Title)
                {
                    query = query.Where(x => x.Title.Contains(keyword)).ToList();
                }
                else if (filtType == FiltType.Label)
                {
                    query = query.Where(x => x.Labels.Contains(keyword)).ToList();
                }
                else if (filtType == FiltType.Datetime)
                {
                    DateTime dt;
                    DateTime.TryParse(keyword, out dt);
                    query = query.Where(x => x.CreateTime.Date == dt.Date).ToList();
                }
                else
                {
                    query = query.Where(x => x.Content != null ? (x.Title.Contains(keyword) || x.Summary.Contains(keyword) || x.Content.Contains(keyword)) : (x.Title.Contains(keyword) || x.Summary.Contains(keyword))).ToList();
                }
            }
            result.PostCount = query.Count;
            if (sortBy == SortBy.Hotest)
            {
                query = query.OrderByDescending(x => x.ViewCount).ThenByDescending(x => x.CreateTime).ToList();
            }
            else
            {
                query = query.OrderByDescending(x => x.CreateTime).ToList();
            }
            result.PostList = query.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
            return(result);
        }