public PagenatedResult GetPagenatedList(PagenagedQueryArgs args) { var query = this.Dbc.GetGenreQuery(); if (!string.IsNullOrEmpty(args.FilterText)) { query = query .Where(e => e.LowerName.Contains(args.FilterText.ToLower())); } var totalLength = query.Count(); query = query.OrderBy(e => e.LowerName); if (args.Page != null) { query = query .Skip(((int)args.Page - 1) * this.PageLength) .Take(this.PageLength); } var array = query.ToArray(); var result = new PagenatedResult() { TotalLength = totalLength, ResultLength = array.Length, ResultPage = args.Page, ResultList = array }; return(result); }
public async Task <PagenatedResult> GetPagenatedList(PagenagedQueryArgs args) { var query = (IQueryable <Album>) this.Dbc.Albums .Include(e => e.GenreAlbums) .Include(e => e.ArtistAlbums) .ThenInclude(e2 => e2.Artist); if (args.GenreIds != null && 0 < args.GenreIds.Length) { query = query .Where(e => e.GenreAlbums.Any(e2 => args.GenreIds.Contains(e2.GenreId))); } if (args.ArtistIds != null && 0 < args.ArtistIds.Length) { query = query .Where(e => e.ArtistAlbums.Any(e2 => args.ArtistIds.Contains(e2.ArtistId))); } if (!string.IsNullOrEmpty(args.FilterText)) { query = query .Where(e => e.LowerName.Contains(args.FilterText.ToLower())); } var ordered = query .OrderBy(e => e.ArtistAlbums.Min(e2 => e2.Artist.LowerName)) .ThenBy(e => e.Year) .ThenBy(e => e.LowerName); var totalLength = ordered.Count(); var albums = (args.Page != null) ? ordered .Skip(((int)args.Page - 1) * this.PageLength) .Take(this.PageLength) .ToList() : ordered .ToList(); var albumTracksList = await this.GetList(albums); var result = new PagenatedResult() { TotalLength = totalLength, ResultLength = albums.Count(), ResultPage = args.Page, ResultList = albumTracksList.ToArray() }; return(result); }