public static CategoryTree BuildFrom(IEnumerable<Category> all) { var cache = new CategoryTree(); var roots = all.Where(c => c.Parent == null); foreach (var root in roots) { cache.Categories.Add(BuildEntry(root, all)); } return cache; }