假设我有以下的
我可以使用以下代码实现:
List<string>
:
可能重复:
是否有一种LINQ方式将键值对列表转换为字典?
请注意,以下是需要翻译的内容:
var input = new List<string>()
{
"key1",
"value1",
"key2",
"value2",
"key3",
"value3",
"key4",
"value4"
};
根据这个列表,我希望转换成 List<KeyValuePair<string, string>>
,原因是为了允许相同的key,这就是为什么我不使用Dictionary。
var output = new List<KeyValuePair<string, string>>()
{
new KeyValuePair<string, string>("key1", "value1"),
new KeyValuePair<string, string>("key2", "value2"),
new KeyValuePair<string, string>("key3", "value3"),
new KeyValuePair<string, string>("key4", "value4"),
};
我可以使用以下代码实现:
var keys = new List<string>();
var values = new List<string>();
for (int index = 0; index < input.Count; index++)
{
if (index % 2 == 0) keys.Add(input[index]);
else values.Add(input[index]);
}
var result = keys.Zip(values, (key, value) =>
new KeyValuePair<string, string>(key, value));
但是感觉使用 for
循环不是最好的方式,有没有另一种方法可以使用内置的 LINQ 来实现呢?