使用IEnumerable <dictionary <string,object =“”>&gt; ds获取键值对</dictionary <string,>

时间:2014-12-22 21:36:34

标签: c# dictionary ienumerable

我将函数的返回类型设置为IEnumerable<Dictionary<string, object>>,我需要获取键值对。

使用适当的密钥,我需要更改值。

我有一个解决方案,当返回类型是一个词典而不是IEnumerable<Dictionary<string, object>>

我终于需要修改后面的值,找到特定的密钥。

2 个答案:

答案 0 :(得分:1)

以下解决方案可能是您所寻找的,但您必须根据您的具体情况确定哪一种更合适

给出

var myKey = "someKey";

假设您的词典列表包含您要查找的密钥,只需一次

var aDictionary = MyEnumerable.Single(x => x.ContainsKey(myKey));
aDictionary[myKey] = myNewValue;

如果

,将抛出InvalidOperationException
  • 找到了多个密钥
  • 找不到钥匙

假设您的词典列表可能包含或不包含您要查找的密钥,只需一次

var aDictionary = MyEnumerable.SingleOrDefault(x => x.ContainsKey(myKey));

if(aDictionary != null)
{
    aDictionary[myKey] = myNewValue;
}

如果

,将抛出InvalidOperationException
  • 找到了多个密钥

假设您的密钥可能出现多次

foreach (var aDictionary in MyEnumerable.Where(x => x.ContainsKey(myKey)))
{
    aDictionary[myKey] = myNewValue;
}

<强>更新

您似乎可能会对类型IEnumerable<Dictionary<string, object>>

感到困惑

IEnumerable是一个列表(针对此对话)

Dictionary表示键和值的集合。

所以你拥有的是键和值的集合列表

答案 1 :(得分:0)

您可以遍历IEnumerable&gt;使用foreach句子: (这只是一个有助于说明的例子)

IEnumerable<Dictionary<string, object>> colectionDict;
foreach(var dict in colectionDict) //dict is an object of type Dictionary<string,object>

此外,您可以使用变量类型Enumerator。

var enum = colectionDict.GetEnumerator();
while(enum.Next){
    var dict = enum.Current; // dict is an object of type Dictionary<string,object>
}