public ArtRelateDto GetRelateDtoByAId(int id) { ArtRelateDto ardList = this.GetRelateDto(); if (id == 0) { return(ardList); } IQueryable <Article> iQ = base.Queryable(u => u.DeleteMark == false); //取出分类FId,和文章对应的标签多个Id var iTagFid = iQ.Where(r => r.Id == id).Select(r => new { r.FId, TagArts = r.TagArts.Select(u => new { u.AId, u.TagId, u.ItemsDetail.ItemCode, u.ItemsDetail.ItemName }) }).FirstOrDefault(); int? fId = iTagFid?.FId; List <int> tagIdList = iTagFid?.TagArts.Select(u => u.TagId).ToList(); Expression <Func <Article, bool> > predicate = u => u.FId == fId; //文章对应的多个标签 List <BaseDto> artTag = new List <BaseDto>(); if (tagIdList != null && tagIdList.Count > 0) { predicate = predicate.Or(u => u.TagArts.Select(r => tagIdList.Contains(r.Id)).Any()); artTag = iTagFid.TagArts.Select(u => new BaseDto { Id = u.TagId, Text = u.ItemName, Code = u.ItemCode }).ToList(); } //有关本文章的相关文章5条 List <BaseDto> relateArt = iQ.Where(predicate) .OrderByNewId().Take(5).Select(u => new BaseDto { Id = u.Id, Text = u.Title }).ToList(); //随机文章 List <BaseDto> randomArt = iQ.Select(u => new BaseDto { Id = u.Id, Text = u.Title }).Take(5).ToList(); ardList.RelateArt = relateArt; ardList.RandomArt = randomArt; ardList.ArtTag = artTag; return(ardList); }
public ArtRelateDto GetRelateDto() { //文章归档 | 可缓存 List <BaseDto> archiveFile = _iRedisHelper.UnitOfWork(string.Format(ConstHelper.Article, "archiveFile"), () => { return(base.Queryable(u => u.DeleteMark == false && u.IsAudit == true).GroupBy(u => u.Archive).Select(u => new { u.Key, u.FirstOrDefault().Archive, u.FirstOrDefault().CreatorTime, count = u.Count(), }).OrderByDescending(u => u.CreatorTime).ToList().Select(u => new BaseDto { Text = u.Archive, Code = u.count.ToString() }).ToList()); }); //从文章列表中取出5条博主最后新增时间的置顶文章 | 可缓存 List <BaseDto> recommendArt = _iRedisHelper.UnitOfWork(string.Format(ConstHelper.Article, "recommendArt"), () => { return(base.Queryable(u => u.DeleteMark == false && u.IsAudit == true).OrderByDescending(u => u.CreatorTime).Take(5).ToList().Select(u => new BaseDto { Id = u.Id, Text = u.Title }).ToList()); }); //取出分类目录:分类编码,分类名称 List <BaseDto> category = _iRedisHelper.UnitOfWork(string.Format(ConstHelper.Article, "category"), () => { return(base.Db.Set <ItemsDetail>().AsNoTracking().Where(u => u.Items.EnCode == EnCode.FTypeCode.ToString()).Select(u => new BaseDto { Id = u.Id, Text = u.ItemName, Code = u.ItemCode }).ToList()); }); ArtRelateDto ardList = new ArtRelateDto { Category = category, RecommendArt = recommendArt, ArchiveFile = archiveFile, }; return(ardList); }