Primera vuelta a su cadena en una matriz adecuada:
String sData = "test1|True,test2|False,test3|False,test4|True";
String[] sDataArray = sData.Split(',');
Entonces se puede procesar la String[]
en un diccionario:
var sDict = sDataArray.ToDictionary(
sKey => sKey.Split('|')[0],
sElement => bool.Parse(sElement.Split('|')[1])
);
El método ToDictionary toma 2 funciones que extraen los datos de clave y elemento de cada elemento de matriz de origen.
Aquí, he extraído cada mitad dividiendo en "|" y luego usé la primera mitad como la clave y la segunda que analicé en un bool
para usar como elemento.
Obviamente, esto no contiene ninguna comprobación de errores, por lo que podría fallar si la cadena de origen no estuviera separada por comas, o si cada elemento no estuviera separado por tuberías. Así que ten cuidado con el origen de tu cadena fuente. Si no coincide exactamente con este patrón, va a fallar, por lo que deberá realizar algunas pruebas y validación.
Marcelo's respuesta es similar, pero creo que es un poco más elegante.
No hay tal cosa como una matriz de tipo cadena. Creo que te refieres a una matriz codificada en una cadena. –
lo siento, sí, es una cadena que quiero convertir en una matriz 2d sobre la marcha dentro de la sentencia linq y convertirla en un objeto de diccionario – Webcognoscere
Las respuestas a esta pregunta solo demuestran cuántas maneras diferentes hay de hacer las cosas. La respuesta de todos hasta ahora es ligeramente diferente, pero todo es válido. Mi voto va para [Marcelo] (http://stackoverflow.com/questions/2817367/how-to-convert-a-2-d-array-into-a-dictionary-object/2817419#2817419), como creo es el más elegante –