好的,我从上一个问题得到了我需要的结果,但我可以在另一个小问题上使用一些帮助。
我得到的结果集如下:
[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表达式或任何其他方法轻松完成此操作?是的,这些值是重复的值。这里没有唯一性,只需要必要的值。谢谢你的帮助!
答案 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())
);