private void IniciarGraficoCertificadosPorNivelOperacional() { listaCertificadosPorNivelOperacional = manterDashboard.ObterCertificadosPorNivelOperacional().ToList(); List <string> listNivelOperacional = listaCertificadosPorNivelOperacional.Where( d => d.Nome.Contains("ANALISTA") || d.Nome.Contains("ASSISTENTE")) .Select(d => d.Nome) .Distinct() .ToList(); listNivelOperacional.Sort(); listNivelOperacional.Add("OUTROS"); List <string> listCertificacoes = listaCertificadosPorNivelOperacional.Select(d => d.Certificados.ToString()).Distinct().ToList(); listNivelOperacional.Sort(); List <string> listaLinhas = new List <string>(); listaLinhas.Add("['NIVEL OCUPACIONAL',"); for (int i = 0; i < listCertificacoes.Count(); i++) { listaLinhas[0] += "'" + listCertificacoes[i] + "'" + (listCertificacoes.Count() - 1 != i ? ", " : "],"); } for (int i = 0; i < listNivelOperacional.Count(); i++) { string itemText = ""; itemText = "['" + listNivelOperacional[i] + "',"; if (listNivelOperacional[i] != "OUTROS") { for (int ii = 0; ii < listCertificacoes.Count(); ii++) { DTOCertificadosPorNivelOperacional item = listaCertificadosPorNivelOperacional.FirstOrDefault( d => d.Nome == listNivelOperacional[i] && d.Certificados.ToString() == listCertificacoes[ii]); itemText += (item != null ? item.Quantidade.ToString() : "0") + (listCertificacoes.Count() - 1 != ii ? ", " : "]"); } } else { for (int ii = 0; ii < listCertificacoes.Count(); ii++) { List <DTOCertificadosPorNivelOperacional> qts = listaCertificadosPorNivelOperacional.Where( d => !(d.Nome.Contains("ANALISTA") || d.Nome.Contains("ASSISTENTE")) && d.Certificados.ToString() == listCertificacoes[ii]).ToList(); int qt = 0; if (qts != null && qts.Count > 0) { qt = qts.Sum(d => d.Quantidade); } itemText += qt + (listCertificacoes.Count() - 1 != ii ? ", " : "]"); } } if (listNivelOperacional.Count() - 1 != i) { itemText += ","; } listaLinhas.Add(itemText); } rptCertificadosPorNivelOperacional.DataSource = listaLinhas; rptCertificadosPorNivelOperacional.DataBind(); }