EF 复杂语句的使用

复制代码
//EF多重排序
context.Serials
                      .Where(s => ("," + s.VideoGenreIds + ",").Contains("," + genreIds + ",") && s.IsEnable && !s.IsDel)
                      .OrderByDescending(v => v.Weight)
                      .ThenByDescending(v => v.Hot)
                      .Skip((currentPage - 1) * pageSize)
                      .Take(pageSize)
                      .Select(v => new SerialBriefModel
                      {
                          Id = v.Id,
                          SerialName = v.SerialName,
                          LastEpisode = v.LastEpisode,
                          Description = v.Description,
                          PicturePath = v.PicturePath,
                          AddTime = v.AddTime
                      }).ToList();



//EF group的使用以及 两表连接


var model = context.Serials
                     .Where(s => s.Id == serialId && s.IsEnable && !s.IsDel)
                     .GroupJoin(context.SerialEpisodes.Where(e=>!e.IsDel), s => s.Id, e => e.SerialId, (s, e) 
                     => new SerialDetailModel
                     {
                         Id = s.Id,
                         SerialName = s.SerialName,
                         VideoAreaId = s.VideoAreaId,
                         VideoAreaName = s.VideoArea.AreaName,
                         VideoGenreIds = s.VideoGenreIds,
                         VideoLanguageId = s.VideoLanguageId,
                         VideoLanguageName = s.VideoLanguage.Language,
                         TotalEpisodes = s.TotalEpisodes,
                         LastEpisode = s.LastEpisode,
                         Director = s.Director,
                         Starring = s.Starring,
                         ReleaseYear = s.ReleaseYear,
                         PicturePath = s.PicturePath,
                         Description = s.Description,
                         Fee = s.VideoChargeMethod.Fee,
                         Hot = s.Hot,
                         Score = s.Score,
                         SerialEpisodes = e.OrderBy(se => se.SerialIndex).Select(se => new SerialEpisodeModel
                         {
                             Id = se.Id,
                             SerialIndex = se.SerialIndex,
                             TagName = se.SerialTag.TagName,
                             Title = se.Title,
                             Description = se.Description
                         }
                         ).ToList()
                     }).FirstOrDefault();
复制代码

 

posted @   大空白纸  阅读(429)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示