2013-10-05 119 views
0

我有一個對象無法得到正確的查詢結果,我需要

class item { Guid id; String name; List<item> childs;} 

有它的數據的兩個部分。

網吧

--John

----盒

--Romeo

網吧

--John

--Romeo

----盒

所以,盒子只是改變了它的主人。

現在我需要得到這個結構作爲一個字符串。

所以,它必須是:

咖啡廳,約翰,盒,羅密歐

咖啡廳,約翰,羅密歐,箱

我有代碼:

public static IEnumerable<item> get_in_one_row(this IEnumerable<item> itemsTree) 
    { 
     return itemsTree.Select(p=>p).Union(itemsTree.SelectMany(p=>p.childs.get_in_one_row())); 
    } 

但我總是得到:咖啡館,約翰,羅密歐,盒子 - 無論誰是盒子的主人。

我該怎麼辦?

謝謝。

+0

聯盟不能保證維持秩序。它做了一個獨特的操作。使用Concat。 – usr

+0

效果相同..... – Monochromie

+0

還有其他的錯誤,因爲對於不同的輸入,你至少應該看到不同的輸出。可能是錯的,但爲什麼沒有改變。我說的是你誤解了某些東西,或者輸入的不是你認爲的東西。 – usr

回答

1

要獲得的順序,你需要遍歷樹以不同的方式結果:

public static IEnumerable<item> get_in_one_row(this IEnumerable<item> itemsTree) 
    { 
     return itemsTree.SelectMany(p => Enumerable.Repeat(p,1).Concat(p.childs.get_in_one_row())); 
    } 
相關問題