示例#1
0
        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());
        }
示例#2
0
        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);
        }