Tolitech.Queryable.Extensions 1.0.0-preview.5

This is a prerelease version of Tolitech.Queryable.Extensions.
dotnet add package Tolitech.Queryable.Extensions --version 1.0.0-preview.5
                    
NuGet\Install-Package Tolitech.Queryable.Extensions -Version 1.0.0-preview.5
                    
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="Tolitech.Queryable.Extensions" Version="1.0.0-preview.5" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Tolitech.Queryable.Extensions" Version="1.0.0-preview.5" />
                    
Directory.Packages.props
<PackageReference Include="Tolitech.Queryable.Extensions" />
                    
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 Tolitech.Queryable.Extensions --version 1.0.0-preview.5
                    
#r "nuget: Tolitech.Queryable.Extensions, 1.0.0-preview.5"
                    
#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 Tolitech.Queryable.Extensions@1.0.0-preview.5
                    
#: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=Tolitech.Queryable.Extensions&version=1.0.0-preview.5&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=Tolitech.Queryable.Extensions&version=1.0.0-preview.5&prerelease
                    
Install as a Cake Tool

Tolitech.Queryable.Extensions

A modern, flexible library for dynamic sorting and pagination of IQueryable data sources in .NET. Designed for developers who want to write expressive, maintainable, and efficient LINQ queries with minimal boilerplate.


✨ Features

  • Dynamic Ordering: Sort collections by any property (including nested) using a simple string syntax.
  • Multi-level Sorting: Chain multiple sort criteria, mixing ascending and descending orders.
  • Effortless Pagination: Retrieve any page of results with a single method call.
  • LINQ-Friendly: Works seamlessly with LINQ providers (Entity Framework, in-memory, etc).

🚀 Getting Started

Install the NuGet package (if available) or add a reference to your project.

using Tolitech.Queryable.Extensions;

🧩 Usage Examples

1. Dynamic Ordering with OrderByExpression

Sort your data dynamically by property names, including nested properties, and specify the order direction.

var products = new List<Product>
{
    new Product { Id = 1, Name = "Apple", Price = 10 },
    new Product { Id = 2, Name = "Orange", Price = 8 },
    new Product { Id = 3, Name = "Banana", Price = 5 }
}.AsQueryable();

// Sort by Name ascending, then by Price descending
var sorted = products.OrderByExpression("Name,Price:desc");

foreach (var p in sorted)
    Console.WriteLine($"{p.Name} - {p.Price}");

Output:

Apple - 10
Banana - 5
Orange - 8
Nested Properties
// Sort by Category.Name descending, then by Name ascending
products.OrderByExpression("Category.Name:desc,Name:asc");

2. Pagination with Paginate

Retrieve a specific page of results from any IQueryable.

var page2 = products.Paginate(pageNumber: 2, pageSize: 2);

foreach (var p in page2)
    Console.WriteLine($"{p.Name} - {p.Price}");

Output:

Banana - 5
Grapes - 15

📚 API Reference

OrderByExpression

IQueryable<T> OrderByExpression<T>(this IQueryable<T> query, string orderByString)
  • orderByString example: "Name:asc,Price:desc" or "Category.Name:desc"
  • Default order is ascending if not specified.

Paginate

IQueryable<T> Paginate<T>(this IQueryable<T> query, int pageNumber, int pageSize)
  • pageNumber: 1-based index.
  • pageSize: Number of items per page.

💡 Tips

  • Combine OrderByExpression and Paginate for efficient, user-driven data grids.
  • Supports nested properties (e.g., Category.Name).
  • Handles empty or null sort strings gracefully (returns original order).

🛠️ Example: Full Query

var query = dbContext.Products
    .OrderByExpression("Category.Name:asc,Name:desc")
    .Paginate(pageNumber: 1, pageSize: 10);

Enjoy clean, dynamic, and powerful querying with Tolitech.Queryable.Extensions!

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  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.
  • net10.0

    • No dependencies.

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.0-preview.5 86 10/31/2025
1.0.0-preview.4 129 7/17/2025
1.0.0-preview.3 127 7/14/2025
1.0.0-preview.2 135 7/1/2025
1.0.0-preview.1 130 12/6/2024