1
class Item
{
public Int32 Id { get; set; }
public Int32 Pid { get; set; }
public String Name { get; set; }
public IEnumerable<Item> Children { get; set; }
}
現在我想拉平這個,所以我可以得到所有的項目和他們的childeren的名稱。
這裏的問題是,我不知道這有多深。
我看了一下:
How to flatten nested objects with linq expression
這是偉大的,如果你知道你多少級有,這我不知道。
所以:
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 ... };
確實差不多就是我所需要的,但我不知道有多少深層次需要去,此外,如果一個項目沒有一個孩子不返回任何東西。
我想我需要一些遞歸例程,但我似乎無法找到它。 我看着IEnumerable,但我真的不明白這一點:)
所以任何幫助將非常appriciated。
可惜,LINQ的解決方案是如此的效率極其低下的..我會建議不要使用它(Eric Lippert也是如此!) –