Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private List<dynamic> CalcAgrupamento(string tipoCalc, string tipoAgrupamento, DataTable histPeriodo)
- {
- var agrupamento = new List<dynamic>();
- if (tipoAgrupamento != "Bloco" &&
- tipoAgrupamento != "Fazenda")
- return null;
- var objAgrupar =
- tipoAgrupamento == "Fazenda"
- ? new { IDFazenda = Convert.ToInt32(d["IDFazenda"]), Bloco = string.Empty }
- : new { IDFazenda = Convert.ToInt32(d["IDFazenda"]), Bloco = Conver.ToString(d["Bloco"]) }
- var agrupado =
- histPeriodo.AsEnumerable()
- .GroupBy(d => objAgrupar);
- switch (tipoCalc)
- {
- case "Soma":
- agrupamento = agrupado.Select(x => (dynamic)new { valor = x.Sum(r => r.Field<double>("Valor")), chave = x.Key.IDFazenda }).ToList();
- break;
- case "Média Simples":
- agrupamento = agrupado.Select(x => (dynamic)new { valor = x.Average(r => r.Field<double>("Valor")), chave = x.Key.IDFazenda }).ToList();
- break;
- case "Máximo":
- agrupamento = agrupado.Select(x => (dynamic)new { valor = x.Max(r => r.Field<double>("Valor")), chave = x.Key.IDFazenda }).ToList();
- break;
- case "Mínimo":
- agrupamento = agrupado.Select(x => (dynamic)new { valor = x.Min(r => r.Field<double>("Valor")), chave = x.Key.IDFazenda }).ToList();
- break;
- case "Média ponderada (área)":
- 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();
- break;
- }
- return agrupamento;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement