public async Task <IEnumerable <BookInst> > GetAllByCustom(BookInstQueryObject queryObject) { var booksQuery = context.BookInstances .Include(bi => bi.Definition) .ThenInclude(bd => bd.Writer) .Include(bi => bi.Definition) .ThenInclude(bd => bd.BookDefGenres).ThenInclude(g => g.Genre) .Include(bi => bi.Language) .Include(bi => bi.Translator) .Include(bi => bi.Publisher) .AsQueryable(); booksQuery = filterQuery(booksQuery, queryObject); return(await booksQuery.ToListAsync()); }
private IQueryable <BookInst> filterQuery(IQueryable <BookInst> queryableSet, BookInstQueryObject queryObject) { if (!string.IsNullOrWhiteSpace(queryObject.WriterNameLike)) { queryableSet = queryableSet.Where(a => a.Definition.Writer.Name.Contains(queryObject.WriterNameLike)); } if (!string.IsNullOrWhiteSpace(queryObject.GenreNameLike)) { queryableSet = queryableSet.Where(q => q.Definition.BookDefGenres.Any(gg => gg.Genre.Name.Contains(queryObject.GenreNameLike))); } if (queryObject.WriterId > 0) { queryableSet = queryableSet.Where(a => a.Definition.Writer.Id == queryObject.WriterId); } return(queryableSet); }