"Convert" Dictionnaire<string,int><object>
J'ai un Dictionary<string,int> dictionary1
et j'ai besoin de le convertir en un List<Data>
où Data
a les propriétés lable
= dictionary1.clé et value
= dictionary1.de la valeur. Je ne veux pas utiliser un pour/boucle foreach (écrit par moi-même) parce que, pour l'éviter, je suis en train d'utiliser un Dictionnaire.
Une autre option serait d'avoir deux différents dictionnaires (dictionary2 et dictionary3) où dictionary2<string,keyOfDictionary1>
et dictionary3<string,valueOfDictionary1>
.
Dois-je faire sens? Est-ce possible? Est-il une meilleure solution?
"ne souhaitez pas utiliser une boucle" va être difficile. Vous allez à pour itérer le dictionnaire quelque.
Vous obtenez un certain nombre de
Tous (en cours) réponses contiennent l'ingrédient clé - Sélectionnez transformer. Ce effectuer une itération sur le dictionnaire, mais vous le faites sans une "boucle". D'accord avec Tim Schmelter, je soupçonne que vous ne voulez pas la syntaxe de la laideur de un for/foreach?
"ne souhaitez pas utiliser une boucle" :O ? C'est IMPOSSIBLE. Autant que je sache, même tous les LINQ des méthodes d'extension de l'utilisation des "boucles" (optimisé) derrière la scène.
C'est ce que le bouton edit pour, rien à être désolé. =)
Vous obtenez un certain nombre de
LINQ
réponses - juste être conscient que les LINQ
bibliothèque encore essentiellement exécute un foreach
pour retourner un résultat.Tous (en cours) réponses contiennent l'ingrédient clé - Sélectionnez transformer. Ce effectuer une itération sur le dictionnaire, mais vous le faites sans une "boucle". D'accord avec Tim Schmelter, je soupçonne que vous ne voulez pas la syntaxe de la laideur de un for/foreach?
"ne souhaitez pas utiliser une boucle" :O ? C'est IMPOSSIBLE. Autant que je sache, même tous les LINQ des méthodes d'extension de l'utilisation des "boucles" (optimisé) derrière la scène.
C'est ce que le bouton edit pour, rien à être désolé. =)
OriginalL'auteur Jenninha | 2012-07-13
Vous devez vous connecter pour publier un commentaire.
En supposant que:
Alors:
OriginalL'auteur abatishchev
Vous pourriez peut-être utiliser LINQ?
C'est cependant à l'aide de
yield
et donc des boucles dans le fond...Data
d'avoir un constructeur qui prend les valeurs comme paramètres, ce qui n'est pas précisé dans la question.Oui, mais c'est une mince affaire que d'en faire inline initialisation, si c'est ce dont il a besoin. Je suis en pointant une technique plutôt qu'un copier-coller solution prête à l'emploi!
OriginalL'auteur Leonard
OriginalL'auteur Eren Ersönmez
Je suppose que "pas de boucle" signifie en fait "je veux LINQ":
OriginalL'auteur Rango
Essayer
OriginalL'auteur Ral Zarek
.NET a déjà un type de données qui ne ce
Data
:KeyValuePair<T1,T2>
. Dictionnaire implémente déjàIEnumerable<KeyValuePair<T1,T2>>
, les jeter à elle.Je suis d'accord qu'il ne sera pas répondre à des besoins si
Key
absolument doit être renomméLabel
. Mais c'est la seule façon d'éviter le bouclage autant que je sache. Cependant, même le cast est inutile. OP pouvez simplement utiliser le dictionnaire n'importe où ils avaient besoin d'un IEnumerable.Malheureusement, j'ai besoin de renommer mes données sur l'Étiquette. J'ai essayé de faire cela mais je voudrais avoir la même chose que vous avez dit. Donc, merci beaucoup pour l'aide et je suis désolé, j'ai généré un missunderstandings en disent pas explicitement que je n'ai pas envie d'écrire un pour/boucle foreach moi-même parce que je savais que les fonctions intégrées serait-il le faire pour moi dans une meilleure façon (même si une boucle à l'arrière-plan était nécessaire).
OriginalL'auteur Jim Counts
C'est un vieux post, mais de ne poster que pour aider d'autres personnes 😉
Exemple de convertir n'importe quel type d'objet:
OriginalL'auteur Silvano Fontes
OriginalL'auteur ken2k
Juste au cas où l'aide n'importe qui, j'ai fait comme ça - va manipuler des objets plus complexes que d'un seul type de valeur, comme indiqué par les OP.
OriginalL'auteur Adrian K