2015-07-12 27 views
2

我在結構美孚「扁平」的數據陣列擁有會員家長和孩子:轉換平板式列表到關係列表

struct Foo { string parent, string child } 

他們可能有數據像這樣:

"parent1", "child1" 
"parent1", "child2" 
"parent2", "child3" 
"parent2", "child4" 

我要強迫他們的「關係」的結構:

struct Bar { string parent, string[] children } 

,並有填充像這樣:

"parent1" 
    "child1" 
    "child2" 
"parent2" 
    "child3" 
    "child4" 

我可以通過循環做到這一點很好,但希望提高我的linq技能......我肯定有一定的辦法嗎?謝謝(4.5框架)

回答

4

使用GroupBy

array.GroupBy(f => f.parent) 
    .Select(g => new Bar { parent = g.Key, children = g.Select(f => f.child).ToArray() }) 
    .ToArray();