通过键获取字典值

如何通过键function获取字典值

我的function代码是这个(和命令我尝试,但没有工作):

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

我的button代码是这样的

 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函数上
stringxmlfile = Settings.xml

这很简单:

 String xmlfile = Data_Array["XML_File"]; 

请注意,如果字典没有等于"XML_File"的键,则该代码将引发exception。 如果你想先检查一下,可以这样使用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 

这不是TryGetValue工作方式。 它根据是否find密钥返回truefalse ,如果key存在,则将其out参数设置为相应的值。

如果你想检查钥匙是否在那里,当它失踪时做一些事情,你需要这样的东西:

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

为什么不在字典上使用键名,C#有这样的:

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

如果你看看小费build议:

在这里输入图像说明

 static void XML_Array(Dictionary<string, string> Data_Array) { String value; if(Data_Array.TryGetValue("XML_File", out value)) { ... Do something here with value ... } } 
 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; } 
  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"]; } 

我使用了一个类似于dasblinkenlight函数的方法来从包含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()”是获取http cookie总体值的另一个简单的Cookie函数。

这里是我在我的源代码中使用的例子。 我从字典中获取从元素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(); } ... 

希望这会帮助你和其他人。 这个解决scheme也适用于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'