XML LINQ后续

时间:2014-01-15 18:21:55

标签: c# xml linq

好的,我从上一个问题得到了我需要的结果,但我可以在另一个小问题上使用一些帮助。

我得到的结果集如下:

[foo], [1, 1, 1, 1]
[bar], [2]
[baz], [3, 3, 3, 3]
[buz], [4]

数据类型是KeyValuePair<string, List<string>>,我需要得到结果集(KeyValuePair的值部分),如下所示:

[foo], [1, 1, 1, 1]
[bar], [2, 2, 2, 2]
[baz], [3, 3, 3, 3]
[buz], [4, 4, 4, 4]

有没有办法用LINQ,Lambda表达式或任何其他方法轻松完成此操作?是的,这些值是重复的值。这里没有唯一性,只需要必要的值。谢谢你的帮助!

1 个答案:

答案 0 :(得分:2)

你可以使用LINQ,这里的主要线索是如果列表太小则使用条件运算符Concat剩余元素:

var max = data.Max(p => p.Value.Count);
var result = 
data.Select(p => new KeyValuePair<string, List<string>>(
            p.Key,
            p.Value.Count == max 
               ? p.Value 
               : p.Value.Concat(Enumerable.Repeat(p.Value.First(), 
                                                  max - p.Value.Count))
                        .ToList())
           );