[英]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.