我的课程如下:
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;
如何访问这些元素?
感谢。
答案 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
属性的字典。 1>} 字典中的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