WM.QueryFilters 1.0.4

There is a newer version of this package available.
See the version list below for details.
dotnet add package WM.QueryFilters --version 1.0.4
                    
NuGet\Install-Package WM.QueryFilters -Version 1.0.4
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="WM.QueryFilters" Version="1.0.4" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="WM.QueryFilters" Version="1.0.4" />
                    
Directory.Packages.props
<PackageReference Include="WM.QueryFilters" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add WM.QueryFilters --version 1.0.4
                    
#r "nuget: WM.QueryFilters, 1.0.4"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package WM.QueryFilters@1.0.4
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=WM.QueryFilters&version=1.0.4
                    
Install as a Cake Addin
#tool nuget:?package=WM.QueryFilters&version=1.0.4
                    
Install as a Cake Tool

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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.7 1,332 5/5/2025
1.0.6 911 5/5/2025
1.0.5 446 4/10/2025
1.0.4 361 4/10/2025
1.0.3 355 4/10/2025
1.0.2 353 4/2/2025
1.0.0 3,938 2/13/2025