如何通过函数上的键获取字典值?

我的函数代码(和我尝试的命令不工作):

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

我的按钮代码:

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

我想对XML_Array函数的变量是:

string xmlfile = "Settings.xml":

当前回答

我使用类似于dasblinkenlight的方法在函数中从包含加载到Dictionary中的JSON数组的Cookie返回一个键值,如下所示:

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

    }

其中“MyCookinator.Get()”是另一个简单的Cookie函数,获取http Cookie的整体值。

其他回答

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

其实很简单:

String xmlfile = Data_Array["XML_File"];

注意,如果字典没有等于“XML_File”的键,代码将抛出异常。如果你想先检查,你可以像这样使用TryGetValue:

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
if (Data_Array["XML_File"] != "") String xmlfile = Data_Array["XML_File"];

下面是我在源代码中使用的一个例子。 我从字典中获取键和值,从元素0到我的字典中的元素数。然后填充string[]数组将其作为参数发送到只接受参数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();
    }
...

这个解决方案也适用于SortedDictionary。

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'