Хочу сделать пагинацию, сортировку и фильтрацию. Я до этого оказывается делал не правильно, я просто вытаскивал все данные из бд, и только потом применял фильры.. Что конечно же, не есть хорошо.
Теперь я додумался, но не пойму как такое можно реализовать...
Я сделал только пагинацию, и сюда я подумал что было бы хорошо запрокинуть типу функцию, которая будет принимать параметры типу => (int offset, int limit, string sortBy, string filter). Пока что только так:
public async Task<IList<TEntity>> GetAllPaged(int offset, int limit)
{
return await _context.Set<TEntity>()
.Skip(offset)
.Take(limit)
.ToListAsync();
}
Теперь вопрос, как сделать расширяющий метод для _context.Set? Должен ли быть это IEnumberable или же Queryable?
Вот что я попробовал сделать в этом абстрактном класс:
public static IEnumerable<TEntity> ApplyFiltEntity(this IEnumerable<TEntity> entity,
Func<TEntity, string> field, string filter)
{
return entity.Where(x => field(x).Contains(filter));
}
Но я не пойму куда его запихнуть) Если впихнуть его в этот класс, где находится работа с entity, то ошибку получаю, что расширяющие методы должны быть в non-generic-классах...