Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

141
Visualizações
recursividad de ASP.NET MVC

Estoy trabajando con .NET MVC que tiene un modelo que implementa la recursividad de la siguiente manera:

 public class Comment { [Key] [Required] public int CommentId { get; set; } [Required] public string Content { get; set; } public bool Anonymous { get; set; } [Required] public DateTime Created_date { get; set; } [Required] public DateTime Last_modified { get; set; } public virtual Comment Reply { get; set; } public virtual ICollection<Comment> Replys { get; set;} public virtual Idea Idea { get; set; } }

En explicación, cada Idea contiene diferentes Comentarios dentro de ella, y cada comentario también tiene varios Comentarios más pequeños que responden al anterior. Sin embargo, no tengo idea de cómo hacer recursividad para obtener respuestas para un comentario y una respuesta más pequeña para cada respuesta hasta la última en el controlador y también cómo mostrarlas a la vista. Siéntase libre de hacerme cualquier pregunta ya que mi explicación a veces no es clara.

 public ActionResult Index(int? i) { List<Idea> Ideas = db.Ideas.ToList(); foreach(Idea idea in Ideas) { idea.Comments = db.Comments.Include(x => x.Reply).ToList(); idea.Comments=idea.Comments.Where(x => x.Idea == idea).ToList(); foreach (Comment comment in idea.Comments) { comment.Replys = GetComments(comment.CommentId); //This function use to get list of reply for comment foreach (Comment reply in comment.Replys) { reply.Replys=GetComments(reply.CommentId); foreach (Comment reply2 in reply.Replys) { reply2.Replys=GetComments(reply2.CommentId); foreach(Comment reply3 in reply2.Replys) { reply3.Replys = GetComments(reply3.CommentId); //When would this stop ? } } } } } return View(Ideas.ToPagedList(i ?? 1, 5)); }
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Utilice este ciclo;

 foreach(Idea idea in Ideas) { idea.Comments = db.Comments.Include(x => x.Reply).ToList(); idea.Comments= idea.Comments.Where(x => x.Idea == idea).ToList(); foreach (Comment comment in idea.Comments) { RecursionGetComments(comment); } }

Agregue esta función;

 public void RecursionGetComments(Comment comment){ comment.Replys = GetComments(comment.CommentId); foreach(var reply in comment.Replys){ RecursionGetComments(reply); } }

Si los RecursionGetComments anteriores no se llenaron correctamente, es posible que deba usar la palabra clave ref que pasa la instancia actual de la clase (pasar por referencia);

 public void RecursionGetComments(ref Comment comment){ comment.Replys = GetComments(comment.CommentId); foreach(var reply in comment.Replys){ RecursionGetComments(reply); } }

También noté que en su modelo, está usando la palabra clave virtual .

Marco de entidad de señales Virtual que la propiedad de navegación se cargará automáticamente / carga diferida, ya que está cargando sus comentarios manualmente, puede eliminar eso.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda