如何从ListDictionary获取特定的字典键值?

时间:2018-10-05 18:52:01

标签: c# linq asp.net-core

我正在实现ListDictionary。我想从该对象中快速获取特定项目,而不必遍历整个过程。

示例:

ListDictionary myCol = new ListDictionary();
myCol.Add("totalCount", 5);
myCol.Add("filteredCount", 2);
myCol.Add("data", data); // Value of data here isn't relevant

现在,我想做的就是获取“ totalCount”的值并按如下方式使用它:

int newCount = myCol["totalCount"] + 5;

但这不会编译为错误“运算符+不能应用于类型为'object'和'int'的操作数。如果我尝试将其强制转换为int,则会出现异常:“未设置对象引用到对象的实例。”

如何获取该密钥的实际值?

2 个答案:

答案 0 :(得分:1)

您的问题可能是因为ListDictionary的{​​{3}}的类型为object。这意味着您的值被装箱和拆箱。这意味着您将需要转换为适当的类型。尝试以下方法:

int newCount = (int?) myCol["totalCount"] + 5 ?? 5;

这将尝试将mycol["totalCount"]转换为一个整型,但是如果为空,它将仅将5分配给newCount

Add Method

答案 1 :(得分:0)

KeysValuesListDictionary中对象的类型。

您需要将对象转换为int类型。

int newCount = Convert.ToInt32( myCol["totalCount"]) + 5;

注意-为避免不必要的转换,请考虑使用通用的Dictionary