•using System.Collections.Generic;
public static void Main()
Console.WriteLine(ConvertCategoryTreeToCategoryQueryResult(new [] { "Frimärken", "Frimärken Sverige", "Frimärken Stockholm" }));
private static Category ConvertCategoryTreeToCategoryQueryResult(IList<string> categoryTree)
var category = (Category)null;
var siblings = new List<Category>();
foreach (var name in categoryTree)
category = new Category(++id, name, 0, parent, children);
siblings = new List<Category> { category };
public Category(int id, string name, int unknown, Category parent, List<Category> children) {
var childrenStringRepresentations = string.Join('\n', children);
var childrenIds = string.Join(',', children.Select(x => x.Id));
StringRepresentation = $"Id={id} Name={name.PadRight(30, ' ')} Unknown={unknown} Parent={parent?.Id} Children=[{childrenIds}]\n{childrenStringRepresentations}";
public string StringRepresentation { get; }
public override string ToString()
return StringRepresentation;