2016-08-01 162 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为只是在那里调试,以缓解