همیشه هنگام پرسیدن اینگونه سوال ها بهتره مدل مورد نظرمون رو هم بزاریم تا بشه از روی اون بهتر تصمیم گرفت.
در هر صورت شما دقیقا به همچین چیزی نیاز دارید.
من این کد رو نوشتم و دارم استفاده می کنم دقیقا درست عمل می کنه.
@helper GetComments(IList<Comment> commentLsist, long id)
{
var comments = (from c in commentLsist
where c.ParentId == id
orderby c.CreateDate descending
select c).ToList();
if (comments != null && comments.Count() > 0)
{
//اگر پدر بود این شرط بررسی میشه
if (id == 0)
{
foreach (var item in comments)
{
//سپس اینجا تگهای مورد نظر پدر رو می نویسید
//در انتها جهت نوشتن فرزندادن تابع رو دوباره فراخونی می کنیم
@GetComments(commentLsist, item.CommentId)
}
}
//اگر فرزند بود این بخش اجرا خواهد شد
else
{
foreach (var item in comments)
{
//و سپس تگهای موجود برای ایجاد فرزند رو داخل حلقه می نویسیم
}
}
}
}
@GetComments(Model.NewsViewModel.Comment, 0)