如何通过类对象访问列表中的字典值?

时间:2014-02-05 15:09:36

标签: c# list object dictionary

我的课程如下:

public class Source
{     
    ...
    ...
    public List<Dictionary<int, int>> blanks { get; set; }
}

我为它创建了一个对象和一个Dictionary。我填写'dic'字典。然后,我将此dic添加到空白列表中。

Source src = new Source();
Dictionary<int, int> dic = new Dictionary<int, int>();
dic.Add(30, 50);
dic.Add(40, 60);
src.blanks.Add(dic);

我尝试访问这些'Key'和'Value'元素。但是,我不能。

int a = src.blanks[0].Key; 
int b = src.blanks[0].Value;

如何访问这些元素?

感谢。

5 个答案:

答案 0 :(得分:2)

src.blanks[0]是一个完整的字典,而不是一个KeyValuePair<int,int>。这就是您无法访问.Key.Value的原因 - 可能存在许多键,以及与之关联的许多值。

您可以通过枚举它们来访问零位字典中的所有键值对,如下所示:

foreach (var kvp in src.blanks[0]) {
    int a = kvp.Key;
    int b = kvp.Value;
    Console.WriteLine("Key:{0} Value:{1}", a, b);
}

答案 1 :(得分:2)

blanks[0]返回Dictionary<int, int>,您需要指定商品的关键字。

src.blanks[0][key]

或循环显示您的值:

foreach(var pair in src.blanks[0])
{
    int currentKey = pair.Key;
    int currentValue = pair.Value;
}

答案 2 :(得分:1)

您正尝试访问列表中没有Key属性的字典} 字典中的Keyvaluepairs 有密钥。

因此,假设您要查看列表中的第一个字典:

Dictionary<int, int> dict = s.blanks[0];
// lookup 30:
int value = dict[30]; // 40

答案 3 :(得分:0)

要获取值,您应首先索引列表,然后索引字典

获得价值

int b = (src.blanks[0])[0]

答案 4 :(得分:0)

您需要以下内容:

var listItem = src.blanks[0];
var dictionaryItem = listItem[0];

var a = dictionaryItem.Key;
var b = dictionaryItem.Value;

尽管如此,我建议你摆脱那些“嵌套泛型”List<Dictionary<..,..>。如果使用这些嵌套结构,您将无法区分正在处理的对象类型。 使用更能代表您的业务逻辑的其他结构。例如,您可以从List

派生自己的类