Advertisement
JulianoRoberto

Untitled

Apr 20th, 2021
22
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.94 KB | None | 0 0
  1. private List<dynamic> CalcAgrupamento(string tipoCalc, string tipoAgrupamento, DataTable histPeriodo)
  2. {
  3. var agrupamento = new List<dynamic>();
  4.  
  5. if (tipoAgrupamento != "Bloco" &&
  6. tipoAgrupamento != "Fazenda")
  7. return null;
  8.  
  9. var agrupado =
  10. histPeriodo.AsEnumerable()
  11. .GroupBy(d =>
  12. tipoAgrupamento == "Fazenda"
  13. ? new { IDFazenda = Convert.ToInt32(d["IDFazenda"]), Bloco = string.Empty }
  14. : new { IDFazenda = Convert.ToInt32(d["IDFazenda"]), Bloco = Conver.ToString(d["Bloco"]) });
  15.  
  16. switch (tipoCalc)
  17. {
  18. case "Soma":
  19. agrupamento = agrupado.Select(x => (dynamic)new { valor = x.Sum(r => r.Field<double>("Valor")), chave = x.Key.IDFazenda }).ToList();
  20. break;
  21. case "Média Simples":
  22. agrupamento = agrupado.Select(x => (dynamic)new { valor = x.Average(r => r.Field<double>("Valor")), chave = x.Key.IDFazenda }).ToList();
  23. break;
  24. case "Máximo":
  25. agrupamento = agrupado.Select(x => (dynamic)new { valor = x.Max(r => r.Field<double>("Valor")), chave = x.Key.IDFazenda }).ToList();
  26. break;
  27. case "Mínimo":
  28. agrupamento = agrupado.Select(x => (dynamic)new { valor = x.Min(r => r.Field<double>("Valor")), chave = x.Key.IDFazenda }).ToList();
  29. break;
  30. case "Média ponderada (área)":
  31. agrupamento = agrupado.Select(x => (dynamic)new { valor = x.Sum(r => r.Field<double>("Valor") / r.Field<double>("AreaTotal")) / x.Sum(r => r.Field<double>("AreaTotal")), chave = x.Key.IDFazenda }).ToList();
  32. break;
  33.  
  34. }
  35. return agrupamento;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement