/// <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; }
/// <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); }