2016-08-01 77 views
3
合併組

我的列表結構爲:中以下鍵值對如何通過列表LINQ

Key  Values 
[PageA] [1, 3, 4] 
[PageA] [1, 3, 5] 
[PageA] [1, 3, 4, 5, 6] 
[PageB] [1, 3, 4, 6] 
[PageC] [1, 3, 4] 
[PageC] [1, 3, 4, 5, 7] 

List<KeyValuePair<string, List<int>>

列表問:我如何合併所有值相同的密鑰,也刪除重複,如下所示。

[PageA] [1, 3, 4, 5, 6] 
[PageB] [1, 3, 4, 6] 
[PageC] [1, 3, 4, 5, 7] 

我想他們組第一,這組他們很好,但我無法進一步合併這些到單個鍵。

var pages = pageData.GroupBy(p => p.Key) 
+0

@MurrayFoxcroft:你似乎缺少了問題的要點。重點是多個「頁面A」條目中的值需要合併。查看問題本身下面的示例輸出。 – Chris

回答

6

通過分組之後你Key你應該使用SelectMany合併您從不同的記錄得到了所有的集合。這樣做後,你可以撥打Distinct

var result = pageData.GroupBy(item => item.Key) 
        .Select(group => new 
        { 
         Key = group.Key, 
         Values = group.SelectMany(item => item.Value).Distinct().ToList() 
        }).ToList(); 

附加.ToList() s爲只是在那裏調試,以緩解