2010-08-18 91 views
0

我有一本字典对 我做字典“paramList”的目标,现在我已经添加键值对到该对象,现在我想知道,如果其他一些网页上我通过在一些方法对象paramList并在该网页上我知道的关键,我想访问它的相应值的话,我怎么能做到这一点 我有这样字典键值对的问题

Dictionary<string, object> paramList = new Dictionary<string, object>(); 
paramList.Add("@courseId", course_id); 
paramList.Add("@passoutYear", passoutYear); 
paramList.Add("@currentBacklog", currentBacklog); 
paramList.Add("@sex", sex); 

对象现在,如果我知道密钥@key和希望知道它对应的值我也有对象

+0

我不明白的问题。请重新表述 – citronas 2010-08-18 06:50:18

+0

我改变短语 – NoviceToDotNet 2010-08-18 06:57:36

回答

4

如果我正确理解你的问题,你想知道如果键在字典中存在,然后检索值。

也许最简单的方法是使用TryGetValue

string key = "@key"; 
object value = null; 
if (paramList.TryGetValue(key, out value)) 
{ 
    // the key exists and the related value is now in value 
} 
else 
{ 
    // the key does not exist 
} 
+0

这给爵士一眼......请即时迫切需要从这个问题我被困在如何电路空参数值从查询... HTTP排序摆脱自己:// stackoverflow.com/questions/3509538/asp-net-sql-or-collection-problem – NoviceToDotNet 2010-08-18 07:55:47

3
//First check if the key exists in the dictionary and then get the item. 
if(paramList.ContainsKey("some-key")) 
{ 
object value = paramList["some-key"]; 
} 

编辑 或者,也许有一个扩展方法。 (为了不做双重查找)。

static class DictionaryExtensions 
{ 
    public static TValue GetValueOrDefault<TKey,TValue>(this IDictionary<TKey,TValue> dict, TKey key) 
    { 
     TValue value; 
     if(dict.TryGetValue(key, out value)) 
      return value; 
     return default(TValue); 
    } 
} 

//Example usage 
paramList.GetValueOrDefault("mykey") ?? "mykey didn't exist"; 
+1

这执行双重字典查找 – abatishchev 2010-08-18 07:18:52

+0

大概,甚至更短的'返回dict.TryGetValue(键,出来的值)?值:默认(TValue);' – abatishchev 2010-08-18 07:31:08

+0

而另一建议 - 通常这样的方法有一个可选的参数(通过过载或另一种方式)表示用于查找失败情况下的默认值,即'返回dict.TryGetValue(键,超时值)? value:defaultValue ??默认(TValue);' – abatishchev 2010-08-18 07:34:32

0

只是为了您的信息,你也可以初始化你的字典用另一个方法:

Dictionary<string, object> paramList = new Dictionary<string, object> 
{ 
    { "@courseId", course_id }, 
    { "@passoutYear", passoutYear }, 
    { "@currentBacklog", currentBacklog }, 
    { "@sex", sex }, 
}; 

这就是所谓的"collection initializer"