c# - Nested classes lists LINQ -


i have following classes:

public class serializeddelegate {     public list<goentry> goentries = new list<goentry>(); } public class goentry {     public string go;     public list<mbentry> mbentries = new list<mbentry>(); } public class mbentry {     public string mb;     public list<methodentry> methodsentries = new list<methodentry>(); } public class methodentry {     public string method; } 

and data:

var sd = new serializeddelegate(); var ego1 = new goentry { go = "player1" }; var ego2 = new goentry { go = "player2" }; var emb1 = new mbentry { mb = "mb1" }; var emb2 = new mbentry { mb = "mb2" }; var em1 = new methodentry { method = "target1" }; var em2 = new methodentry { method = "target2" }; var em3 = new methodentry { method = "target3" }; var em4 = new methodentry { method = "target4" }; emb1.methodsentries.add(em1); emb1.methodsentries.add(em2); emb2.methodsentries.add(em3); emb2.methodsentries.add(em4); ego1.mbentries.addrange(new[] { emb1, emb2 }); ego2.mbentries.add(emb1); sd.goentries.addrange(new[] { ego1, ego2 }); 

what i'm trying - print them in following form:

     player1: mb1.target1      player1: mb1.target2      player1: mb2.target3      player1: mb2.target4      player2: mb1.target1      player2: mb1.target2 

i have printed them using foreach loops:

foreach (var goentry in sd.goentries) {     foreach (var mbentry in goentry.mbentries) {         foreach (var methodentry in mbentry.methodsentries)             console.writeline(goentry.go + ": " + mbentry.mb + "." + methodentry.method);     } } 

but want in linq way - want construct linq structure corresponds how want print them - need 1 foreach loop (so length of constructed enumerable number of total methods - in case, 6).

i started - no idea how proceed further:

var entries = sd.goentries     .select(g => new     {         go = g.go,         mbs = g.mbentries,         methods = g.mbentries.selectmany(e => e.methodsentries)     }); 

eventually, method entries in popup - that's why need structure, through out tell mbentry belongs goentry, , methodentry belongs mbentry.

sorry if wasn't clear enough - if that's case, please so.

thanks.

var entries = goentry in sd.goentries               mbentry in goentry.mbentries               methodentry in mbentry.methodsentries               select new { goentry.go, mbentry.mb, methodentry.method }; 

you can output entries way:

 foreach(var entry in entries)     console.writeline("{0}: {1}.{2}", entry.go, entry.mb, entry.method); 

Comments

Popular posts from this blog

apache - Remove .php and add trailing slash in url using htaccess not loading css -

javascript - jQuery show full size image on click -