Convierta Lista <string> a List <KeyValuePair <string, string >> usando Linq [duplicado]
Posible duplicado:
¿Hay alguna forma de LINQ de pasar de una lista de pares clave / valor a un diccionario?
Supongamos que tengo unList<string>
como a continuación:
var input = new List<string>()
{
"key1",
"value1",
"key2",
"value2",
"key3",
"value3",
"key4",
"value4"
};
Basado en esta lista, me gustaría convertir aList<KeyValuePair<string, string>>
, la razón es permitir la misma clave, por eso no uso el Diccionario.
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"),
};
Puedo lograr usando el siguiente código:
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));
Pero sintiendo que esta no es la mejor manera usando loop.for
, ¿hay alguna otra forma en que podamos usar LINQ incorporado para lograrlo?