Get dictionary value by key

C#DictionaryKey

C# Problem Overview


How can I get the dictionary value by a key on a function?

My function code (and the command I try doesn't work):

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

My button code:

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

I want on the XML_Array function the variable to be:

string xmlfile = "Settings.xml":

C# Solutions


Solution 1 - C#

It's as simple as this:

String xmlfile = Data_Array["XML_File"];

Note that if the dictionary doesn't have a key that equals "XML_File", that code will throw an exception. If you want to check first, you can use TryGetValue like this:

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

Solution 2 - C#

Just use the key name on the dictionary. C# has this:

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

If you look at the tip suggestion:

Enter image description here

Solution 3 - C#

That is not how the TryGetValue works. It returns true or false based on whether the key is found or not, and sets its out parameter to the corresponding value if the key is there.

If you want to check if the key is there or not and do something when it's missing, you need something like this:

bool hasValue = Data_Array.TryGetValue("XML_File", out value);
if (hasValue) {
    xmlfile = value;
} else {
    // do something when the value is not there
}

Solution 4 - C#

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'

Solution 5 - C#

static void XML_Array(Dictionary<string, string> Data_Array)
{
    String value;
    if(Data_Array.TryGetValue("XML_File", out value))
    {
        // ... Do something here with value ...
    }
}

Solution 6 - C#

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

Solution 7 - C#

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

Solution 8 - C#

Here is an example which I use in my source code. I am getting key and value from Dictionary from element 0 to number of elements in my Dictionary. Then I fill my string[] array which I send as a parameter after in my function which accept only params 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();
	}
...

This solution works with SortedDictionary also.

Solution 9 - C#

Dictionary<int,string> dict = new Dictionary<int,string>{
  {1,"item1"},
  {2,"item2"},
  {3,"item3"},
}

int key = 2 // for example
string result = dict.ContainsKey(key) ? dict[key] : null;

Solution 10 - C#

I use a similar method to dasblinkenlight's in a function to return a single key value from a Cookie containing a JSON array loaded into a Dictionary as follows:

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

    }

Where "MyCookinator.Get()" is another simple Cookie function getting an http cookie overall value.

Solution 11 - C#

if (Data_Array["XML_File"] != "") String xmlfile = Data_Array["XML_File"];

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionMatei ZocView Question on Stackoverflow
Solution 1 - C#BlorgbeardView Answer on Stackoverflow
Solution 2 - C#FrenkyBView Answer on Stackoverflow
Solution 3 - C#Sergey KalinichenkoView Answer on Stackoverflow
Solution 4 - C#Mahadev ManeView Answer on Stackoverflow
Solution 5 - C#aqwertView Answer on Stackoverflow
Solution 6 - C#Jacek LisińskiView Answer on Stackoverflow
Solution 7 - C#Suman BanerjeeView Answer on Stackoverflow
Solution 8 - C#ShixxView Answer on Stackoverflow
Solution 9 - C#Andy ChangView Answer on Stackoverflow
Solution 10 - C#Martin Sansone - MiOEEView Answer on Stackoverflow
Solution 11 - C#Abdalla ElmedaniView Answer on Stackoverflow