Feed list gives "Index out of range"

3

On my system, I need to return the number of questions the student missed on a given topic. To achieve this, I tried creating a class that has two attributes: Tema and QteErros and instantiated it in my controller.

public ActionResult errosPorTema(int idAluno)
{
   Aluno a = alunoModel.obterAluno(idAluno);
   List<Tema> temasalunoAtividadeModel.listarTemasPorAluno(idAluno);

   List<ErradaTema> listaErradasTema = new List<ErradaTema>();

   for (int i = 0; i < temas.Count; i++)
   {
      int idTema = temas[i].idTema;
      int qtdErros =      alunoAtividadeModel.listarPerguntasErradasPorTema2(a.idAluno, idTema);

      listaErradasTema[i].Tema = temas[i].Descricao;
      listaErradasTema[i].QtdErradas = qtdErros;
    }

    return View(listaErradasTema);
}

The class ErradaTema :

public class ErradaTema
    {
        public string Tema { get; set; }
        public int QtdErradas { get; set; }

        public ErradaTema(string tema, int qtdErradas)
        {
            this.Tema = tema;
            this.QtdErradas = qtdErradas;
        }

        public ErradaTema()
        {

        }

    }

The problem is in the listaErradasTema[i].Tema = temas[i].Descricao; and   listaErradasTema[i].QtdErradas = qtdErros; .

    
asked by anonymous 14.10.2015 / 02:25

1 answer

3

The error is that you are not adding an element to the new list. You can not access the element without creating it first. nor do you really need to access it:

public ActionResult errosPorTema(int idAluno) {
    Aluno a = alunoModel.obterAluno(idAluno);
    List<Tema> temas = alunoAtividadeModel.listarTemasPorAluno(idAluno);
    var listaErradasTema = new List<ErradaTema>();
    for (int i = 0; i < temas.Count; i++) {
        listaErradasTema.Add(new ErradaTema() {
            Tema = temas[i].Descricao,
            QtdeErradas = alunoAtividadeModel.listarPerguntasErradasPorTema2(a.idAluno, temas[i].idTema)
        });
    }
    return View(listaErradasTema);
}

Since the class has a constructor with both properties, it could initialize with it. But I doubt this builder is needed . The other builder is certainly not necessary. I would simplify this class and leave only the properties. Unless it's going to grow.

    
14.10.2015 / 02:28