TL.QueryableExtensionsLibrary
0.8.0
dotnet add package TL.QueryableExtensionsLibrary --version 0.8.0
NuGet\Install-Package TL.QueryableExtensionsLibrary -Version 0.8.0
<PackageReference Include="TL.QueryableExtensionsLibrary" Version="0.8.0" />
<PackageVersion Include="TL.QueryableExtensionsLibrary" Version="0.8.0" />
<PackageReference Include="TL.QueryableExtensionsLibrary" />
paket add TL.QueryableExtensionsLibrary --version 0.8.0
#r "nuget: TL.QueryableExtensionsLibrary, 0.8.0"
#:package TL.QueryableExtensionsLibrary@0.8.0
#addin nuget:?package=TL.QueryableExtensionsLibrary&version=0.8.0
#tool nuget:?package=TL.QueryableExtensionsLibrary&version=0.8.0
🔍 TL.QueryableExtensionsLibrary
Dynamic IQueryable extensions for EF Core: keyset pagination, string-based filtering, safe sorting, and conditional queries for clean APIs.
Extensões dinâmicas para IQueryable no EF Core: paginação keyset, filtros por string, ordenação segura e consultas condicionais para APIs limpas.
O TL.QueryableExtensionsLibrary fornece extensões para IQueryable<T> voltadas para construção dinâmica de consultas LINQ através de Expression Trees, viabilizando filtros, ordenações, paginação e agregações por nome de propriedade em tempo de execução.
📦 Instalação
Adicione o pacote ao seu projeto através do .NET CLI:
dotnet add package TL.QueryableExtensionsLibrary
🚀 Funcionalidades Principais
| Método | Retorno | Descrição |
|---|---|---|
Filter(property, value) |
IQueryable<T> |
Filtra dinamicamente por igualdade, com conversão automática para tipos primitivos, Guid, DateTime, Enum e tipos anuláveis (Nullable<T>). |
Filter(property, comparison, value) |
IQueryable<T> |
Filtra dinamicamente com operadores relacionais e textuais (=, !=, >, <, >=, <=, Contains, StartsWith, EndsWith), suportando Guid, datas e nullables. |
Order(property, ascending) |
IQueryable<T> |
Ordena dinamicamente (OrderBy ou OrderByDescending) pelo nome da propriedade informada. |
Page(index, size) |
IQueryable<T> |
Realiza paginação baseada em índice inicial 1 (Skip((index-1)*size).Take(size)). |
ToKeysetPagedList(keySelector, pageSize) |
KeysetPagedList<T, TKey> |
Paginação Keyset/Seek $O(1)$ otimizada para bancos de dados sem cláusulas OFFSET/SKIP. |
ToKeysetPagedList(keySelector, cursor, pageSize, direction) |
KeysetPagedList<T, TKey> |
Navegação Keyset $O(1)$ dinâmica com cursor (> cursor ou < cursor) e direção (Forward / Backward). |
GroupBy<T, TKey>(property) |
IQueryable<IGrouping<TKey, T>> |
Agrupa os elementos dinamicamente pela propriedade especificada. |
DistinctBy<T, TKey>(property) |
IQueryable<T> |
Remove duplicatas mantendo o primeiro elemento para cada chave agrupada. |
Sum(property) |
decimal |
Calcula o somatório dinâmico da propriedade numérica especificada. |
Min(property) |
decimal |
Obtém o valor mínimo da propriedade numérica especificada. |
Max(property) |
decimal |
Obtém o valor máximo da propriedade numérica especificada. |
Average(property) |
decimal |
Calcula a média dos valores da propriedade numérica especificada. |
Count(predicate) |
int |
Retorna a quantidade de elementos que satisfazem o predicado informado. |
Any(predicate) |
bool |
Determina se qualquer elemento satisfaz a condição especificada. |
💡 Exemplos de Uso
using System.Linq;
using QueryableExtensionsLibrary;
public class Produto
{
public int Id { get; set; }
public string Nome { get; set; } = string.Empty;
public decimal Preco { get; set; }
public string Categoria { get; set; } = string.Empty;
}
public class ConsultaService
{
public IQueryable<Produto> FiltrarEOrdenar(IQueryable<Produto> produtos, string campoOrdenacao, bool ascendente, int pagina, int tamanho)
{
return produtos
.Filter("Categoria", "Eletronicos")
.Order(campoOrdenacao, ascendente)
.Page(pagina, tamanho);
}
}
🏛️ Decisões Arquiteturais
Para detalhes sobre a construção das árvores de expressão e considerações de desempenho, consulte:
📄 Licença
Distribuído sob a licença MIT.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. 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 is compatible. 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. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- No dependencies.
-
net8.0
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on TL.QueryableExtensionsLibrary:
| Package | Downloads |
|---|---|
|
TL.ExtensionLibrary.Infrastructure
Clean Architecture Infrastructure metapackage: database querying, resilient HTTP, and assembly scanning extensions, transitively including Application and Domain. |
GitHub repositories
This package is not used by any popular GitHub repositories.