Skip to content

Instantly share code, notes, and snippets.

@jfbueno
Last active July 18, 2019 19:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jfbueno/e3bfb2777ac17b8b25c6ebe3c35eb213 to your computer and use it in GitHub Desktop.
Save jfbueno/e3bfb2777ac17b8b25c6ebe3c35eb213 to your computer and use it in GitHub Desktop.
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,
Compras = g.ToArray(),
Total = g.Sum(c => c.Valor),
MaiorValor = g.Max(c => c.Valor),
Qtd = g.Count()
})
});
foreach(var grupo in comprasPorMesECliente)
{
WriteLine($"Mês: {grupo.Mes}");
WriteLine($"{grupo.QtdComprasMes} compras, com um total de {grupo.TotalComprasMes}.");
WriteLine($"A maior compra foi de {grupo.MaiorCompraMes:n2}");
foreach(var grupoInterno in grupo.ComprasPorCliente)
{
WriteLine($"\t{grupoInterno.Cliente} fez {grupoInterno.Qtd} compras, com um total de {grupoInterno.Total}");
WriteLine($"\tA maior compra foi de {grupoInterno.MaiorValor:n2}");
foreach(var elemento in grupoInterno.Compras)
{
WriteLine($"\t\t{elemento.Valor:n2} em {elemento.Data:dd/MM}");
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment