c# - modificar - obtener el valor del diccionario por clave
modificar valor diccionario c# (9)
¿Por qué no usar el nombre de la tecla en el diccionario? C # tiene esto:
Dictionary<string, string> dict = new Dictionary<string, string>();
dict.Add("UserID", "test");
string userIDFromDictionaryByKey = dict["UserID"];
Si miras la sugerencia de sugerencia:
¿Cómo puedo obtener el valor del diccionario por la tecla en la función?
mi código de función es esto (y el comando lo intento pero no funcionó):
static void XML_Array(Dictionary<string, string> Data_Array)
{
String xmlfile = Data_Array.TryGetValue("XML_File", out value);
}
mi código de botón es esto
private void button2_Click(object sender, EventArgs e)
{
Dictionary<string, string> Data_Array = new Dictionary<string, string>();
Data_Array.Add("XML_File", "Settings.xml");
XML_Array(Data_Array);
}
Quiero algo como esto:
en la función XML_Array
para ser
cadena xmlfile = Settings.xml
Aquí hay un ejemplo que uso en mi código fuente. Obtengo clave y valor del Diccionario del elemento 0 al número de elementos en mi Diccionario. Luego llene mi matriz de cadena [] que envío como parámetro después en mi función, que acepta solo cadena de parámetros []
Dictionary<string, decimal> listKomPop = addElements();
int xpopCount = listKomPop.Count;
if (xpopCount > 0)
{
string[] xpostoci = new string[xpopCount];
for (int i = 0; i < xpopCount; i++)
{
/* here you have key and value element */
string key = listKomPop.Keys.ElementAt(i);
decimal value = listKomPop[key];
xpostoci[i] = value.ToString();
}
...
Espero que esto te ayude a ti y a los demás. Esta solución también funciona con SortedDictionary.
Saludos cordiales,
Ozren Sirola
Así no es como funciona TryGetValue
. Devuelve true
o false
según se encuentre o no la clave, y establece su parámetro de out
en el valor correspondiente si la clave está allí.
Si desea verificar si la clave está allí o no y hacer algo cuando falta, necesita algo como esto:
bool hasValue = Data_Array.TryGetValue("XML_File", out value);
if (hasValue) {
xmlfile = value;
} else {
// do something when the value is not there
}
Es tan simple como esto:
String xmlfile = Data_Array["XML_File"];
Tenga en cuenta que si el diccionario no tiene una clave que sea igual a "XML_File"
, ese código emitirá una excepción. Si desea verificar primero, puede usar TryGetValue de esta manera:
string xmlfile;
if (!Data_Array.TryGetValue("XML_File", out xmlfile)) {
// the key isn''t in the dictionary.
return; // or whatever you want to do
}
// xmlfile is now equal to the value
Utilizo un método similar a dasblinkenlight''s en una función para devolver un único valor de clave de una cookie que contiene una matriz JSON cargada en un diccionario de la siguiente manera:
/// <summary>
/// Gets a single key Value from a Json filled cookie with ''cookiename'',''key''
/// </summary>
public static string GetSpecialCookieKeyVal(string _CookieName, string _key)
{
//CALL COOKIE VALUES INTO DICTIONARY
Dictionary<string, string> dictCookie =
JsonConvert.DeserializeObject<Dictionary<string, string>>
(MyCookinator.Get(_CookieName));
string value;
if (dictCookie.TryGetValue( _key, out value))
{
return value;
}
else
{
return "0";
}
}
Donde "MyCookinator.Get ()" es otra función de Cookie simple obteniendo un valor global de cookies http.
private void button2_Click(object sender, EventArgs e)
{
Dictionary<string, string> Data_Array = new Dictionary<string, string>();
Data_Array.Add("XML_File", "Settings.xml");
XML_Array(Data_Array);
}
static void XML_Array(Dictionary<string, string> Data_Array)
{
String xmlfile = Data_Array["XML_File"];
}
Dictionary<String,String> d = new Dictionary<String,String>();
d.Add("1","Mahadev");
d.Add("2","Mahesh");
Console.WriteLine(d["1"]);// it will print Value of key ''1''
static String findFirstKeyByValue(Dictionary<string, string> Data_Array, String value)
{
if (Data_Array.ContainsValue(value))
{
foreach (String key in Data_Array.Keys)
{
if (Data_Array[key].Equals(value))
return key;
}
}
return null;
}
static void XML_Array(Dictionary<string, string> Data_Array)
{
String value;
if(Data_Array.TryGetValue("XML_File", out value))
{
... Do something here with value ...
}
}