Skip to content

Instantly share code, notes, and snippets.

Avatar
🏠
Working from home

Jefh jfbueno

🏠
Working from home
View GitHub Profile
View DotnetForJavaDevs.md

Dotnet para desenvolvedores Java

If you only knew the power of the darkside

.NET CLI

Criando uma nova solução:

View agrupamento-aninhado.cs
var comprasPorMesECliente = Compras.GroupBy(compra => compra.Data.Month).Select(gp => new
{
Mes = _dtFormat.GetMonthName(gp.Key),
TotalComprasMes = gp.Sum(c => c.Valor),
MaiorCompraMes = gp.Max(c => c.Valor),
QtdComprasMes = gp.Count(),
ComprasPorCliente = gp.GroupBy(c => c.Cliente).Select(g => new
{
Cliente = g.Key,
View agrupamento_por-data.cs
IEnumerable<IGrouping<int, Compra>> grupos
= Compras.GroupBy(compra => compra.Pagamento.Month); // Como deve ser agrupado
foreach(var grupo in grupos) // Coleção de grupos
{
WriteLine($"Compras pagas no mês de {_dtFormat.GetMonthName(grupo.Key)}"); // Chave do agrupamento
foreach(var elemento in grupo) // Compras do grupo => IGrouping<int, Compra>
{
WriteLine($"\t{elemento.ToString()}");
}
View aggregacoes-com-filtro.cs
// Apenas clientes com mais de uma compra
var aggComFiltro = grupos.Where(gp => gp.Count() > 1).Select(gp => new
{
Cliente = gp.Key,
PiorCompra = gp.Where(c => c.Valor > 150).Min(x => x.Valor)
// Apenas compras acima de 150
});
foreach(var elemento in aggComFiltro)
{
View agregacoes.cs
var agg = grupos.Select(gp => new
{
Cliente = gp.Key,
QuantidadeCompras = gp.Count(),
MelhorCompra = gp.Max(x => x.Valor),
PiorCompra = gp.Min(x => x.Valor),
TotalCompras = gp.Sum(x => x.Valor)
});
foreach(var elemento in agg)
View agrupamento_por-cliente.cs
IEnumerable<IGrouping<string, Compra>> grupos
= Compras.GroupBy(x => x.Cliente); // Como deve ser agrupado
foreach(var grupo in grupos) // Coleção de grupos
{
WriteLine($"Compras de {grupo.Key}");
foreach(var compra in grupo) // Compras do grupo => IGrouping<string, Compra>
{
WriteLine($"\t {compra.Valor:n2}");
}
View classe.cs
class Compra
{
public string Cliente { get; set; }
public decimal Valor { get; set; }
public DateTime Data { get; set; }
public override string ToString() => $"{Cliente}, com valor de {Valor:n2} em {Data:dd/MM}";
}
View eventos-repo.cs
public class EventosRepository
{
public Evento[] ObterEventos()
{
var eventos = Connection.Query<Evento>("Select * From Eventos Limit X, Y");
ComporRelacionados(eventos);
return eventos;
}
private void ComporRelacionados(Evento[] eventos)
View eventos-repo.cs
public class EventosRepository
{
public Evento[] ObterEventos()
{
var eventos = Connection.Query<Evento>("Select * From Eventos Limit X, Y");
ComporRelacionados(eventos);
return eventos;
}
private void ComporRelacionados(Evento[] eventos)
View meuwhere-yield.cs
public static IEnumerable<T> MeuWhere<T>(this IEnumerable<T> src, Func<T, bool> predicate)
{
foreach(var item in src)
if (predicate(item))
yield return item;
}
You can’t perform that action at this time.