private IEnumerable <Book> Where(IDictionary <string, string> @params) { var queries = @params.ToObject <BookRequest>(); var linqQuery = Where(b => b.IsActivated()); if (queries.CategoryId != Guid.Empty) { linqQuery = _bookCategoryService.Include(bc => bc.Book) .Where(bc => bc.CategoryId == queries.CategoryId && bc.IsActivated() && bc.Book.IsActivated()) .Select(bc => bc.Book); } if (queries.AuthorId != Guid.Empty) { linqQuery = linqQuery.Where(book => book.AuthorId == queries.AuthorId); } if (!string.IsNullOrEmpty(queries.BookType)) { linqQuery = FilterBookType(linqQuery, queries.BookType); } return(linqQuery .Skip(queries.Limit * (queries.Page - 1)) .Take(queries.Limit)); }