using System.Collections.Generic;
public static void Main()
var forums = new List<Forum>
SubForums = new List<Forum>
new Forum {Id = 2, ParentId = 1, Name = "Forum 2"},
new Forum {Id = 3, ParentId = 1, Name = "Forum 3"}
.Where(f => !f.ParentId.HasValue)
.OrderByDescending(f => f.Name)
.Skip((page - 1)*pageSize)
.Select(f => new ForumDTO
SubForums = f.SubForums.Select(sf => new ForumDTO
Console.WriteLine(d.Name);
if (d.SubForums.Count <= 0) continue;
foreach (var subForum in d.SubForums)
Console.WriteLine("\t"+ subForum.Name);
SubForums = new List<Forum>();
public int Id { get; set; }
public int? ParentId { get; set; }
public string Name { get; set; }
public DateTime Created { get; set; }
public virtual Forum Parent { get; set; }
public virtual ICollection<Forum> SubForums { get; set; }
public int Id { get; set; }
public int? ParentId { get; set; }
public string Name { get; set; }
public DateTime? Created { get; set; }
public ForumDTO Parent { get; set; }
public List<ForumDTO> SubForums { get; set; }