繁体   English   中英

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

[英]How to access a Dictionary values within a list by a class object?

我上了一堂课,如下所示:

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

我已经为此创建了一个对象和一个字典。 我填写了“ 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);

我尝试访问这些“键”和“值”元素。 但是,我不能。

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

我该怎么做才能访问这些元素?

谢谢。

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);
}

blanks[0]返回Dictionary<int, int> ,您需要指定项目的键。

src.blanks[0][key]

或循环查看您的值:

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

您正在尝试访问列表中没有Key属性的字典 Keyvaluepairs 字典有键。

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

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

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

获得价值

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

您需要以下内容:

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

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

不过,我建议您摆脱那些“嵌套的泛型” List<Dictionary<..,..> 如果使用这些嵌套结构,则将无法区分要处理的对象类型。 使用其他结构更好地表示您的业务逻辑。 例如,您可以从List派生您自己的类

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM