Recursive Selecting Similar Objects (LINQ) -
i've got bit of situation similar objects - basically, every object implements collection of base type. ...
item1 - list items2 - list items3
public list specials { get; set; }
item2 : item1 item3 : item1
special { public int value { get; set; } public string name { get; set; } }
now, can go down tree , things - want want of "special" class intances entire object, way down tree - 1 single collection.
is possible linq? or have rely on convoluted loops?
you can use linq in combination recursive functions:
static ienumerable<special> getspecials(item1 item1) { var item2specials = item1.items2.selectmany(item2 => getspecials(item2)); var item3specials = item1.items3.selectmany(item3 => getspecials(item3)); return item1.specials.concat(item2specials).concat(item3specials); }
it little difficult me understand notation class structure. i'm assuming meant following c# classes:
class item1 { public list<item2> items2 = new list<item2>(); public list<item3> items3 = new list<item3>(); public list<special> specials = new list<special>(); } class item2 : item1 { } class item3 : item1 { } class special { public int value { get; set; } public string name { get; set; } }
i assuming mean linq-to-objects , not linq-to-sql. if want store heirarchical data in database should not instead @ nested set model.
Comments
Post a Comment