代码:
var list = new List<KeyValuePair<int, string[]>>();
list .Add(new KeyValuePair<int, string[]>(1, new string[] { "1", "One"}));
list .Add(new KeyValuePair<int, string[]>(2, new string[] { "2", "Two"}));
list .Add(new KeyValuePair<int, string[]>(3, new string[] { "3", "Three"}));
list .Add(new KeyValuePair<int, string[]>(4, new string[] { "4", "Four"}));
只需选择KeyValuePairs列表中的值并构建数组。我试过这个。
var values = list.Select(v => v.Value.ToList()).ToArray();
期待这样的string[]
。
{"1", "One", "2", "Two", "3", "Three", "4", "Four"}
但它会返回List<string>[]
这样的
{{"1", "One"}, {"2", "Two"}, {"3", "Three"}, {"4", "Four"}}
也试过
var values = list.Select(v => v.Value.ToArray()).ToArray();
但它会返回string[][]
。我可以将string[][]
转换为string[]
,但我想直接使用Linq进行此操作。
我需要将预期的数组传递给另一个方法。请帮忙。
谢谢!
答案 0 :(得分:5)
使用Enumerable.SelectMany
之类的:
var values = list.SelectMany(v => v.Value).ToArray();
将序列的每个元素投影到
IEnumerable<T>
和 将生成的序列展平为一个序列。
答案 1 :(得分:1)
var values = list.SelectMany(v => v.Value).ToArray();