Ich bin eine verschachtelte Klasse mit:C# Flatten Objekt verschachtelt
class Item
{
public Int32 Id { get; set; }
public Int32 Pid { get; set; }
public String Name { get; set; }
public IEnumerable<Item> Children { get; set; }
}
Jetzt möchte ich dies glätten, so kann ich den Namen aller Items und deren childeren bekommen.
Problem hier ist, dass ich nicht weiß, wie viele Ebenen tief geht das.
hatte ich einen Blick auf:
How to flatten nested objects with linq expression
Das ist großartig, wenn Sie wissen, wie viele Ebenen Sie haben, was ich nicht tun.
So:
var r = from b in items
from c in b.Children
from d in c.Children
...
select new { b.Name, c = c.Name, d = d.Name ... };
macht ziemlich genau, was ich brauche, aber ich weiß nicht, wie viele Ebenen tief muss ich gehen, auch wenn ein Artikel nicht über ein Kind es gibt nichts zurück .
Ich würde einige rekursive Routine auf diesem ich denke, aber ich kann nicht scheinen, es zu finden. Ich schaute IEnumerable, aber ich verstehe das noch nicht :)
So jede Hilfe wäre sehr geschätzt.
Schade, dass die Linq Lösung so schrecklich ineffizient ist .. Ich würde empfehlen, es nicht zu benutzen (wie auch Eric Lippert!) –