繁体   English   中英

如何在LINQ中按列表合并

[英]How to merge group by list in LINQ

我的列表结构是: List<KeyValuePair<string, List<int>>

以下KeyValue对列表

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]

问:如何合并相同键的所有值,同时删除重复项,如下所示。

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

我试图先将它们分组,将它们分组,但我无法将它们进一步合并为单个键。

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

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()只是为了便于调试

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM