J'ai la déclaration suivante:
Dictionary<string, Dictionary<string, string>> like = new Dictionary<string, Dictionary<string, string>>();
Je dois obtenir le premier élément, mais je ne connais pas la clé ni la valeur. Quelle est la meilleure façon de faire cela?
Pour tous ceux qui viennent à cela qui veulent un moyen sans linq pour obtenir un élément à partir d'un dictionnaire
var d = new Dictionary<string, string>();
d.Add("a", "b");
var e = d.GetEnumerator();
e.MoveNext();
var anElement = e.Current;
// anElement/e.Current is a KeyValuePair<string,string>
// where Key = "a", Value = "b"
Je ne sais pas si cela dépend de l'implémentation, mais si votre dictionnaire ne contient aucun élément, Current
contiendra un KeyValuePair<string, string>
où la clé et la valeur sont à la fois null
.
(J'ai examiné la logique derrière la méthode First
de linq pour le trouver et je l'ai testé via LinqPad 4
)
Bien que vous puissiez utiliser First()
, les dictionnaires n’ont pas d’ordre en soi. Veuillez utiliser OrderedDictionary à la place. Et alors vous pouvez faire FirstOrDefault
. De cette façon, cela aura un sens.
EDIT: Utilisez un OrderedDictionary.
Il vaut mieux utiliser FirstOrDefault()
pour récupérer la première valeur.
Ex:
var firstElement = like.FirstOrDefault();
string firstElementKey = firstElement.Key;
Dictinary<string,string> firstElementValue = firstElement.Value;
Le dictionnaire ne définit pas l'ordre des éléments. Si vous avez juste besoin d'un élément, utilisez les propriétés Keys
ou Values
du dictionnaire pour en choisir un.
Dictionary<string, Dictionary<string, string>> like = new Dictionary<string, Dictionary<string, string>>();
Dictionary<string, string> first = like.Values.First();
mal trouver un moyen facile de trouver premier élément dans le dictionnaire :)
Dictionary<string, Dictionary<string, string>> like =
newDictionary<string,Dictionary<string, string>>();
foreach(KeyValuePair<string, Dictionary<string, string>> _element in like)
{
Console.WriteLine(_element.Key); // or do something
break;
}