d'abord transformer votre chaîne dans un tableau approprié:
String sData = "test1|True,test2|False,test3|False,test4|True";
String[] sDataArray = sData.Split(',');
Ensuite, vous pouvez traiter le String[]
dans un dictionnaire:
var sDict = sDataArray.ToDictionary(
sKey => sKey.Split('|')[0],
sElement => bool.Parse(sElement.Split('|')[1])
);
La méthode ToDictionary prend 2 fonctions qui extraient les données de clé et d'élément de chaque élément du tableau source.
Ici, j'ai extrait chaque moitié en divisant le "|" et ensuite utilisé la première moitié comme clé et la seconde j'ai analysé dans un bool
à utiliser comme élément.
De toute évidence, cela ne contient aucune vérification d'erreur, donc cela pourrait échouer si la chaîne source n'était pas séparée par une virgule, ou si chaque élément n'était pas séparé par un tube. Alors soyez prudent avec l'origine de votre chaîne source. S'il ne correspond pas exactement à ce modèle, il échouera, vous devrez donc faire quelques tests et valider.
Marcelo's réponse est similaire, mais je pense que c'est un peu plus élégant.
Il n'y a pas une telle chose comme un tableau de type chaîne. Je pense que vous voulez dire un tableau encodé dans une chaîne. –
désolé, oui c'est une chaîne que je veux convertir dans un tableau 2d à la volée à l'intérieur de l'instruction linq et convertir en un objet dictionnaire – Webcognoscere
Les réponses à cette question démontrent juste combien de façons différentes il y a de faire les choses. La réponse de tout le monde jusqu'à présent est légèrement différente, mais toutes valables. Mon vote va pour [Marcelo] (http://stackoverflow.com/questions/2817367/how-to-convert-a-2-d-array-into-a-dictionary-object/2817419#2817419), comme je pense c'est le plus élégant. –