WM.QueryFilters
1.0.7
dotnet add package WM.QueryFilters --version 1.0.7
NuGet\Install-Package WM.QueryFilters -Version 1.0.7
<PackageReference Include="WM.QueryFilters" Version="1.0.7" />
<PackageVersion Include="WM.QueryFilters" Version="1.0.7" />
<PackageReference Include="WM.QueryFilters" />
paket add WM.QueryFilters --version 1.0.7
#r "nuget: WM.QueryFilters, 1.0.7"
#:package WM.QueryFilters@1.0.7
#addin nuget:?package=WM.QueryFilters&version=1.0.7
#tool nuget:?package=WM.QueryFilters&version=1.0.7
QueryFilters
QueryFilters — це бібліотека для фільтрації та пагінації даних у .NET, яка дозволяє легко інтегрувати запити з фільтрами, сортуванням і розбиттям на сторінки у ваших API.
📦 Встановлення
Ви можете встановити пакет через NuGet:
Install-Package QueryFilters
Або через .NET CLI:
dotnet add package QueryFilters
🚀 Використання
1. Додавання атрибута AllowedQueryFilters
Додавайте атрибут [AllowedQueryFilters] до ваших API-ендпоінтів, щоб автоматично обробляти фільтри:
[HttpGet]
[AllowedQueryFilters]
public ActionResult<PaginatedDto<CustomerDTO>> GetCustomers(
[FromQuery] int page = 1,
[FromQuery] int pageSize = 10,
[FromQuery] string? sortField = null,
[FromQuery] bool sortDescending = false)
{
var result = _customerService.GetCustomers()
.PaginateAndFilterData(QueryFilters, page, pageSize, sortField, sortDescending);
return Ok(new PaginatedDto<CustomerDTO>()
{
TotalCount = result.TotalCount,
Data = result.Data.Select(c => new CustomerDTO(c))
});
}
2. Використання QueryFilters у базовому контролері
Щоб зручно використовувати QueryFilters у всіх контролерах, можна створити базовий клас контролера:
using Microsoft.AspNetCore.Mvc;
public abstract class BaseController : ControllerBase
{
protected Dictionary<string, string> QueryFilters =>
HttpContext.Items["filters"] as Dictionary<string, string> ?? new Dictionary<string, string>();
}
Це дозволяє легко отримувати фільтри у похідних контролерах без зайвого коду.
3. Використання методу PaginateAndFilterData
Метод PaginateAndFilterData дозволяє:
- Застосовувати фільтрацію згідно з переданими параметрами.
- Сортувати дані за вказаним полем.
- Пагінувати результати.
var result = _customerService.GetCustomers()
.PaginateAndFilterData(QueryFilters, page, pageSize, sortField, sortDescending);
4. Використання методу FilterData
Якщо вам не потрібна пагінація, а тільки фільтрація та сортування, використовуйте FilterData:
var result = _customerService.GetCustomers()
.FilterData(QueryFilters, sortField, sortDescending);
Метод FilterData повертає:
TotalCount— загальну кількість елементів після фільтрації.Data— відфільтровані та відсортовані елементи.
public static (int TotalCount, IEnumerable<T> Data) FilterData<T>(this IQueryable<T> sourceData,
Dictionary<string, string> filters = null,
string sortField = null,
bool sortDescending = false)
📌 Переваги
✅ Легка інтеграція. ✅ Підтримка динамічних фільтрів. ✅ Гнучке сортування та пагінація. ✅ Мінімум конфігурації.
🔗 Ліцензія
Цей пакет розповсюджується за ліцензією MIT. Вільний для використання у комерційних і відкритих проєктах.
📢 Якщо у вас є питання або пропозиції, відкривайте issue на GitHub або надсилайте PR!
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net6.0
- Microsoft.AspNetCore.Mvc.Core (>= 2.3.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.