Convertir un tableau de dictionnaire avec comme valeur d'index de l'élément de clé et que l'élément lui-même
J'ai un tableau comme -
arr[0] = "Name";
arr[1] = "Address";
arr[2] = "Phone";
...
Je veux créer un Dictionary<string, int>
tels que le tableau de valeurs seront les clés de dictionnaire et le dictionnaire de valeurs de l'indice, de sorte que je puisse obtenir l'index d'une colonne en interrogeant son nom dans O(1)
. Je sais que ce devrait être assez simple, mais je ne peux pas obtenir ma tête autour de lui.
J'ai essayé -
Dictionary<string, int> myDict = arr.ToDictionary(x => x, x => indexOf(x))
toutefois, cela renvoie -
{(Name, 0), (Address, 0), (Phone, 0),...}
Je sais ce qui se passe parce que c'est le stockage de l'index de la première occurrence, mais ce n'est pas ce que je cherche à faire.
- Désolé, mais pourquoi auriez-vous besoin que de toute façon?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser la surcharge de
Select
qui comprend l'index:Ou de l'utilisation
Enumerable.Range
:Noter que
ToDictionary
va lever une exception si vous essayez de fournir l'égalité des deux touches. Vous devriez réfléchir à la possibilité de votre tableau ayant deux valeurs égales, et ce que vous voulez arriver dans cette situation.Je serais tenté juste pour le faire manuellement si:
Distinct
premier.Enumerable.Range(0, array.Length).ToDictionary(x => array[x], x => x);
x => x
peut être omis dans la seconde :var dictionary2 = Enumerable.Range(0, arr.Length).ToDictionary(x => arr[x]);
Une autre façon est: