public IQueryable<Post> GetPostsByPageAndSort(string sortType, string sortDirection, string search, int page, int take) { IQueryable<Post> posts = null; switch (sortType) { case "Date": posts = sortDirection == "ascending" ? this.posts.All().OrderBy(x => x.CreatedOn) : this.posts.All().OrderByDescending(x => x.CreatedOn); break; case "Title": posts = sortDirection == "ascending" ? this.posts.All().OrderBy(x => x.Title) : this.posts.All().OrderByDescending(x => x.Title); break; case "User": posts = sortDirection == "ascending" ? this.posts.All().OrderBy(x => x.User.UserName) : this.posts.All().OrderByDescending(x => x.User.UserName); break; case "Category": posts = sortDirection == "ascending" ? this.posts.All().OrderBy(x => x.Category.Name) : this.posts.All().OrderByDescending(x => x.Category.Name); break; } if (search == string.Empty || search == null) { posts = posts .Skip((page - 1) * take) .Take(take); } else { posts = posts .Where(x => x.Title.Contains(search)) .Skip((page - 1) * take) .Take(take); } return posts; }
public IQueryable<Category> GetCategoriesByPageAndSort(string sortType, string sortDirection, int page, int take) { IQueryable<Category> categories = null; switch (sortType) { case "Id": categories = sortDirection == "ascending" ? this.categories.All().OrderBy(x => x.Id) : this.categories.All().OrderByDescending(x => x.Id); break; case "Name": categories = sortDirection == "ascending" ? this.categories.All().OrderBy(x => x.Name) : this.categories.All().OrderByDescending(x => x.Name); break; case "CreatedOn": categories = sortDirection == "ascending" ? this.categories.All().OrderBy(x => x.CreatedOn) : this.categories.All().OrderByDescending(x => x.CreatedOn); break; case "ModifiedOn": categories = sortDirection == "ascending" ? this.categories.All().OrderBy(x => x.ModifiedOn) : this.categories.All().OrderByDescending(x => x.ModifiedOn); break; } categories = categories .Skip((page - 1) * take) .Take(take); return categories; }