TL.CollectionExtensionsLibrary
0.4.0
See the version list below for details.
dotnet add package TL.CollectionExtensionsLibrary --version 0.4.0
NuGet\Install-Package TL.CollectionExtensionsLibrary -Version 0.4.0
<PackageReference Include="TL.CollectionExtensionsLibrary" Version="0.4.0" />
<PackageVersion Include="TL.CollectionExtensionsLibrary" Version="0.4.0" />
<PackageReference Include="TL.CollectionExtensionsLibrary" />
paket add TL.CollectionExtensionsLibrary --version 0.4.0
#r "nuget: TL.CollectionExtensionsLibrary, 0.4.0"
#:package TL.CollectionExtensionsLibrary@0.4.0
#addin nuget:?package=TL.CollectionExtensionsLibrary&version=0.4.0
#tool nuget:?package=TL.CollectionExtensionsLibrary&version=0.4.0
📦 TL.CollectionExtensionsLibrary
Practical collection extensions for .NET: efficient batching (ChunkBy), in-memory keyset pagination, safe filtering, and uniform shuffling.
Extensões práticas para coleções no .NET: particionamento em lotes (ChunkBy), paginação keyset em memória, filtros seguros e embaralhamento uniforme.
O TL.CollectionExtensionsLibrary oferece um conjunto robusto de extensões de alto desempenho para coleções no .NET (IEnumerable<T>, IList<T>, Dictionary<TKey, TValue>, HashSet<T>, Queue<T> e Stack<T>), simplificando particionamento (batching), buscas, ordenações e manipulações comuns com complexidade assintótica previsível.
📦 Instalação
Adicione o pacote ao seu projeto através do .NET CLI:
dotnet add package TL.CollectionExtensionsLibrary
🚀 Funcionalidades Principais
IEnumerable<T>
| Método | Retorno | Descrição |
|---|---|---|
ChunkBy(chunkSize) |
IEnumerable<List<T>> |
Divide a sequência em lotes com passagem linear única $O(N)$ em streaming. |
Shuffle() |
IEnumerable<T> |
Embaralha os elementos com algoritmo Fisher-Yates e distribuição estatisticamente uniforme. |
WhereIf(condition, predicate) |
IEnumerable<T> |
Aplica o filtro de forma condicional apenas se condition for verdadeira. |
DistinctBy(keySelector) |
IEnumerable<T> |
Retorna elementos com base na unicidade da chave selecionada. |
ToKeysetPagedList(keySelector, pageSize) |
KeysetPagedList<T, TKey> |
Paginação de alta performance Keyset/Seek $O(1)$ para a primeira página. |
ToKeysetPagedList(keySelector, cursor, pageSize, direction) |
KeysetPagedList<T, TKey> |
Navegação Keyset/Seek $O(1)$ em streaming baseada em cursor e direção (Forward / Backward). |
IsNullOrEmpty() |
bool |
Valida se a coleção é nula ou se não possui nenhum elemento. |
IList<T>
| Método | Retorno | Descrição |
|---|---|---|
AddRangeIfNotExists(items) |
void |
Adiciona em lote apenas os itens inexistentes com verificação $O(1)$ por elemento. |
Replace(oldItem, newItem) |
bool |
Substitui a primeira ocorrência do elemento com comparação segura contra nulos. |
SortBy(keySelector) |
void |
Ordena a lista in-place a partir de um seletor de chave. |
RemoveAll(predicate) |
int |
Remove todos os elementos que atendem ao predicado. |
FindAll(predicate) |
List<T> |
Retorna nova lista com todos os itens compatíveis. |
Dictionary<TKey, TValue> & Estruturas Especializadas
| Estrutura | Método | Descrição |
|---|---|---|
Dictionary |
GetOrAdd(key, valueFactory) |
Retorna o valor existente ou calcula e armazena um novo valor caso ausente. |
Dictionary |
AddRangeIfNotExists(pairs) |
Adiciona múltiplos pares chave/valor ignorando chaves já presentes. |
Queue<T> |
EnqueueRange(items) |
Enfileira múltiplos itens sequencialmente em lote. |
Stack<T> |
PushRange(items) |
Empilha múltiplos itens sequencialmente em lote. |
💡 Exemplos de Uso
using System;
using System.Collections.Generic;
using CollectionExtensionsLibrary;
public class LoteProcessador
{
public void ProcessarEmLotes(IEnumerable<string> itens)
{
// 1. Particionamento linear de alta performance em lotes de 100
foreach (var lote in itens.ChunkBy(100))
{
EnviarParaFila(lote);
}
// 2. Filtro condicional fluente sem quebrar a cadeia LINQ
bool apenasAtivos = true;
var filtrados = itens.WhereIf(apenasAtivos, item => item.StartsWith("ATIVO_"));
}
private void EnviarParaFila(List<string> lote) => Console.WriteLine($"Lote de {lote.Count} enviado.");
}
🏛️ Decisões Arquiteturais
Para entender as garantias de complexidade assintótica $O(N)$ em particionamentos e otimização de alocação de memória, 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.CollectionExtensionsLibrary:
| Package | Downloads |
|---|---|
|
TL.ExtensionLibrary.Domain
Clean Architecture Domain metapackage: pure, high-performance domain extensions (String, Numeric, DateTime, Enum, Collection) with zero external infrastructure dependencies. |
GitHub repositories
This package is not used by any popular GitHub repositories.