By the statement I gave an example to show the answer and be clearer.
Existing class:
public class RelatorioDisciplinasDto{
public int CodigoNivelEnsino { get; set; }
public string NivelEnsino { get; set; }
public string Disciplina { get; set; }
}
Example on console:
using System;
using System.Collections.Generic;
using System.Linq;
class MainClass {
public static void Main (string[] args) {
List<RelatorioDisciplinasDto> grades = new List<RelatorioDisciplinasDto>();
//Ensino Médio possui inglês, física e biologia, matemática e português.
grades.Add(new RelatorioDisciplinasDto{
CodigoNivelEnsino = 1, NivelEnsino = "Ensino Médio", Disciplina = "Inglês"
});
grades.Add(new RelatorioDisciplinasDto{
CodigoNivelEnsino = 1, NivelEnsino = "Ensino Médio", Disciplina = "Física"
});
grades.Add(new RelatorioDisciplinasDto{
CodigoNivelEnsino = 1, NivelEnsino = "Ensino Médio", Disciplina = "Biologia"
});
grades.Add(new RelatorioDisciplinasDto{
CodigoNivelEnsino = 1, NivelEnsino = "Ensino Médio", Disciplina = "Matemática"
});
grades.Add(new RelatorioDisciplinasDto{
CodigoNivelEnsino = 1, NivelEnsino = "Ensino Médio", Disciplina = "Português"
});
//Ensino Fundamental possui as disciplinas de matemática, português e ciências.
grades.Add(new RelatorioDisciplinasDto{
CodigoNivelEnsino = 2, NivelEnsino = "Ensino Fundamental", Disciplina = "Matemática"
});
grades.Add(new RelatorioDisciplinasDto{
CodigoNivelEnsino = 2, NivelEnsino = "Ensino Fundamental", Disciplina = "Português"
});
grades.Add(new RelatorioDisciplinasDto{
CodigoNivelEnsino = 2, NivelEnsino = "Ensino Fundamental", Disciplina = "Ciências"
});
grades.Add(new RelatorioDisciplinasDto{
CodigoNivelEnsino = 2, NivelEnsino = "Ensino Fundamental", Disciplina = "Ciências"
});
var quantidadeDeCadaDisciplinasPorEnsino = grades
.GroupBy(
grade => grade.NivelEnsino,
grade => grade.Disciplina,
(nivelEnsino, disciplinas) => new
{
TipoDeEnsino = nivelEnsino,
CountDisciplinas = disciplinas.Count(),
Disciplinas = disciplinas
}
);
Console.WriteLine("\nQuantidade de cada disciplina que exista em cada ensino:\n");
foreach (var result in quantidadeDeCadaDisciplinasPorEnsino)
{
Console.WriteLine("Tipo de Ensino: " + result.TipoDeEnsino);
Console.WriteLine("Número de Disciplinas: " + result.CountDisciplinas);
var group = result.Disciplinas
.GroupBy(s => s)
.Select(g => new { Name = g.Key, Count = g.Count() });
foreach (var disciplina in group){
Console.WriteLine("Nome da Disciplina: " + disciplina.Name);
Console.WriteLine("Quantidade: " + disciplina.Count);
}
Console.WriteLine();
}
Console.WriteLine("\n----------------------------\n");
Console.WriteLine("Somatório das disciplinas em todos os ensinos:\n");
var somatorioDeCadaDisciplina = grades
.Select(grade => grade.Disciplina)
.GroupBy(s => s)
.Select(g => new { Name = g.Key, Count = g.Count() });
foreach (var result in somatorioDeCadaDisciplina)
{
Console.WriteLine("Nome da Disciplina: " + result.Name);
Console.WriteLine("Quantidade: " + result.Count);
}
}
}
I have a Dto that has: public int Anoconcurso { get; set; } public List<Reportdisciplinesdto> Componenetescurricular { get; set; Inside Reportdisciplinesdto: public int Codigonivelensino { get; set; } public string Nivelensino { get; set; } public string Disciplina { get; set; } The problem is that in groupBy when I type in the grid. (dot), he does not see Discipline. . Groupby( grid => grid.Componenetescurricular,
– Thun An Freitas Chiu
My statistical report is coming to the service with the information I want. public int Anoconcurso { get; set; } public List<Reportdisciplinesdto> Componenetescurricular { get; set; } Dái this list comes from the discipline name Nivelensino. But when I put it on Groupby, I can’t access discipline by calling it a grid. In theory it would be grid.ComponenetesCurriculars.Discipline.
– Thun An Freitas Chiu
It was, a thousand apologies. =(
– Thun An Freitas Chiu
Thank you very much. I can’t thank you enough.
– Thun An Freitas Chiu
I really appreciate it. I’m sorry I didn’t get the full information.
– Thun An Freitas Chiu
@Thunanfreitaschiu if I helped to get the answer put the answer as accepted
– MauroAlmeida