📚 Pré-requisitos Teóricos: este projeto aplica conceitos ensinados em Especialização em Sistemas com C#. Recomendado revisar antes de começar.
v1.0 — C# 12, .NET 8, LINQ, PLINQ, Streams e Manipulação Concorrente
Trilha de Especialização Pedagógica — Projeto 1 de 4
- ➡️ v1 (este): Engine de Dados · C# .NET 8 · LINQ / PLINQ · Streams · Tipagem Forte
- v2: Web API Corporativa com ASP.NET Core & Entity Framework Core
- v3: Clean Architecture, CQRS & MediatR em .NET 8
- v4: Comunicação em Tempo Real com SignalR & Microservices
🎓 Nível Profissional Simulado: Desenvolvedor C# / .NET Júnior. C# é a espinha dorsal de sistemas corporativos de missão crítica em bancos, seguradoras e multinacionais. Dominar LINQ (Language Integrated Query) e paralelismo com PLINQ permite filtrar, agregar e transformar milhões de registros com clareza e alta velocidade.
—`
Construir uma Engine de Processamento e Auditoria Financeira em C# .NET 8, utilizando consultas declarativas LINQ e paralelismo com PLINQ para filtrar, agregar, agrupar e calcular métricas de vendas e risco sobre coleções de centenas de milhares de transações em memória.
—`
“Nossa mesa de operações recebe 100.000 transações por lote. Precisamos de um motor em C# que consiga: filtrar transações suspeitas (valor acima de R$ 50.000), agrupar o total transacionado por categoria de cliente e calcular o ticket médio, tudo isso utilizando os múltiplos cores do servidor sem travar a thread principal.”
| ID | Tipo | Descrição | Origem no Briefing |
|---|---|---|---|
| RF01 | Funcional | Filtrar transações com valor superior ao limiar de risco utilizando LINQ Where. |
“filtrar transações suspeitas” |
| RF02 | Funcional | Agrupar e somar volumes financeiros por categoria com LINQ GroupBy. |
“agrupar total por categoria” |
| RF03 | Funcional | Processar coleções em paralelo com PLINQ AsParallel(). |
“múltiplos cores do servidor” |
| RNF01 | Não-Funcional | Tempo de processamento de 100.000 registros inferior a 50 milissegundos. | Alta Performance |
| RNF02 | Não-Funcional | Uso de tipos imutáveis record do C# 12 para segurança em threads. |
Thread Safety |
—`
| ID | User Story | Prioridade |
|---|---|---|
| US01 | Como auditor de risco, quero consultar transações anômalas com agregação instantânea. | Alta |
| US02 | Como arquiteto .NET, quero explorar paralelismo nativo do hardware via PLINQ. | Alta |
—`
# Branch da funcionalidade
git checkout -b feature/US01-csharp-linq-engine
# Executar a aplicacao via .NET CLI
dotnet run
—`
Program.cs)using System;
using System.Collections.Generic;
using System.Linq;
public record Transacao(int Id, string Categoria, decimal Valor, DateTime Data);
class Program
{
static void Main()
{
var transacoes = new List<Transacao>
{
new(1, "Varejo", 1500.00m, DateTime.Now),
new(2, "Corporativo", 85000.00m, DateTime.Now),
new(3, "Varejo", 3200.00m, DateTime.Now),
};
// Consulta LINQ declarativa
var suspeitas = transacoes
.AsParallel() // PLINQ para execucao paralela
.Where(t => t.Valor > 50000.00m)
.ToList();
Console.WriteLine($"Transacoes de Alto Risco Encontradas: {suspeitas.Count}");
}
}
—`
No seu editor/IDE, abra a pasta deste projeto (File > Open Folder) ou navegue via terminal:
cd sistemas_csharp_01_engine_linq
dotnet run
dotnet test
[!TIP] Dica para execução a partir da raiz do repositório: Se você abriu o repositório completo no VS Code, basta navegar até a pasta antes de executar: cd proj_aplicacoes_full_stack/projetos/sistemas_csharp_01_engine_linq`
—`
// Asserção de filtro LINQ
var totalVarejo = transacoes.Where(t => t.Categoria == "Varejo").Sum(t => t.Valor);
Console.WriteLine($"Total Varejo: R$ {totalVarejo:F2}");
—`
- Motor LINQ processando filtros e agregações com precisão decimal.
- Execução paralela com PLINQ validada.
| ⬅️ Ver Todos os Projetos no Super-Hub | 🏠 Página Inicial do Portal |