web-dev-qa-db-fra.com

obtenir la valeur du dictionnaire par clé

Comment puis-je obtenir la valeur du dictionnaire par clé sur la fonction

mon code de fonction est ceci (et la commande ce que j'essaye mais n'a pas fonctionné):

static void XML_Array(Dictionary<string, string> Data_Array)
{
    String xmlfile = Data_Array.TryGetValue("XML_File", out value);
}

mon code de bouton est-ce

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);
}

Je veux quelque chose comme ça:
sur XML_Array fonction à être
string xmlfile = Settings.xml

109
Matei Zoc

C'est aussi simple que ça:

String xmlfile = Data_Array["XML_File"];

Notez que si le dictionnaire n'a pas de clé égale à "XML_File", ce code lève une exception. Si vous voulez vérifier en premier, vous pouvez utiliser TryGetValue comme ceci:

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
159
Blorgbeard

Pourquoi ne pas simplement utiliser le nom de la clé sur le dictionnaire, C # a ceci:

 Dictionary<string, string> dict = new Dictionary<string, string>();
 dict.Add("UserID", "test");
 string userIDFromDictionaryByKey = dict["UserID"];

Si vous regardez la suggestion d'astuce:

 enter image description here

37
FrenkyB

Ce n'est pas comme cela que fonctionne la TryGetValue. Il renvoie true ou false selon que la clé est trouvée ou non, et définit son paramètre out sur la valeur correspondante si la clé est présente.

Si vous voulez vérifier si la clé est là ou pas et faire quelque chose quand elle manque, vous avez besoin de quelque chose comme ça:

bool hasValue = Data_Array.TryGetValue("XML_File", out value);
if (hasValue) {
    xmlfile = value;
} else {
    // do something when the value is not there
}
25
dasblinkenlight
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'
8
Mahadev Mane
static void XML_Array(Dictionary<string, string> Data_Array)
{
    String value;
    if(Data_Array.TryGetValue("XML_File", out value))
    {
     ... Do something here with value ...
    }
}
4
aqwert
          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"];
            }
2
Sumon Banerjee
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;
}
2
Jacek Lisiński

J'utilise une méthode similaire à celle de dasblinkenlight dans une fonction pour renvoyer une clé unique à partir d'un cookie contenant un tableau JSON chargé dans un dictionnaire, comme suit:

    /// <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";
        }

    }

Où "MyCookinator.Get ()" est une autre fonction de cookie simple qui obtient une valeur globale de cookie http.

1

Voici un exemple que j’utilise dans mon code source . Je récupère clé et valeur du dictionnaire de l’élément 0 au nombre d’éléments de mon dictionnaire. Ensuite, je remplis mon tableau string [] que j’envoie en paramètre après dans ma fonction qui accepte uniquement les paramètres string [] 

    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();
        }
    ...

J'espère que cela vous aidera et aidera les autres. Cette solution fonctionne également avec SortedDictionary.

Sincères amitiés,

Ozren Sirola

1
Shixx
if (Data_Array["XML_File"] != "") String xmlfile = Data_Array["XML_File"];
0
Abdalla Elmedani