Ya no busques más por todo internet ya que estás al espacio justo, poseemos la solución que deseas pero sin problemas.
Solución:
Tenga en cuenta que para llamar First
aquí es en realidad para llamar a una extensión Linq de IEnumerable, que se implementa mediante Dictionary
. Pero para un Diccionario, “primero” no tiene un significado definido. De acuerdo con esta respuesta, el último elemento agregado termina siendo el “Primero” (en otras palabras, se comporta como un Pila), pero eso es específico de la implementación, no es el garantizado comportamiento. En otras palabras, a asumir vas a obtener cualquier artículo definido llamando Primero sería pedir problemas, usarlo debería ser tratado como similar a obtener un aleatorio artículo del Diccionario, como lo señala Bobson a continuación. Sin embargo, a veces esto es útil, ya que solo necesita ningún elemento del Diccionario.
Solo usa el Linq First()
:
var first = like.First();
string key = first.Key;
Dictionary val = first.Value;
Tenga en cuenta que usando First
en un diccionario te da un KeyValuePair
en este caso KeyValuePair
.
Tenga en cuenta también que Ud. pudo obtener un significado específico del uso de First
combinándolo con el Linq OrderBy
:
var first = like.OrderBy(kvp => kvp.Key).First();
Para cualquiera que venga a esto y quiera una forma sin linq de obtener un elemento de un diccionario
var d = new Dictionary();
d.Add("a", "b");
var e = d.GetEnumerator();
e.MoveNext();
var anElement = e.Current;
// anElement/e.Current is a KeyValuePair
// where Key = "a", Value = "b"
No estoy seguro de si esto es específico de la implementación, pero si su Diccionario no tiene ningún elemento, Current
contendrá un KeyValuePair
donde tanto el key y el valor son null
.
(Miré la lógica detrás de linq First
método para llegar a esto, y lo probé a través de LinqPad 4
)
Aunque puedes usar First()
, Los diccionarios no tienen orden per se. Utilice OrderedDictionary en su lugar. Y luego puedes hacer FirstOrDefault
. De esta manera tendrá sentido.
Aquí tienes las comentarios y calificaciones
Si te animas, tienes la opción de dejar un enunciado acerca de qué le añadirías a este tutorial.