Skip to content

Instantly share code, notes, and snippets.

@hagbarddenstore
Last active August 29, 2015 14:01
Show Gist options
  • Save hagbarddenstore/67ec5ae007764a6b50ae to your computer and use it in GitHub Desktop.
Save hagbarddenstore/67ec5ae007764a6b50ae to your computer and use it in GitHub Desktop.
void Main()
{
var root = new FamilyItem
{
Name = "A",
FamilyItems = new List<FamilyItem>
{
new FamilyItem
{
Name = "B",
FamilyItems = new List<FamilyItem>
{
new FamilyItem(),
new FamilyItem(),
new FamilyItem()
}
},
new FamilyItem
{
Name = "C",
FamilyItems = new List<FamilyItem>
{
new FamilyItem(),
new FamilyItem(),
new FamilyItem(),
new FamilyItem()
}
}
}
};
Func<FamilyItem, IEnumerable<FamilyItem>> flatten = null;
flatten = (FamilyItem x) =>
{
return x.FamilyItems.SelectMany(p => flatten(p))
.Concat(new[] { x });
};
var largestFamily = from family in flatten(root)
let count = family.FamilyItems != null ? family.FamilyItems.Count : 0
orderby count descending
select family;
Console.WriteLine(largestFamily.First().Name);
}
class FamilyItem
{
public FamilyItem()
{
FamilyItems = new List<FamilyItem>();
}
public string Name { get; set; }
public List<FamilyItem> FamilyItems { get; set; }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment