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

Popular posts from this blog

c++ - Convert big endian to little endian when reading from a binary file -

C#: Application without a window or taskbar item (background app) that can still use Console.WriteLine() -

unicode - Are email addresses allowed to contain non-alphanumeric characters? -