[英]get key value pair from a dictionary inside a dictionary
我有认识
private Dictionary<int, Dictionary<string, int>> levelProgress;
// LevelID -->[String][Progress]
我想仅从嵌套字典(存储的字典)中的第一个元素获取键和值,但是我需要来自levelProgress [key]的字典,仅其第一个键和其第一个值
foreach (int key in levelProgress.Keys)
{
Dictionary<string, int> storedDictionary;
if (levelProgress.TryGetValue(key, out storedDictionary))
{
}
}
这是获取第一把钥匙的方法:
var innerDictKvp = levelProgress[key].First();
var key = innerDictKvp.Key;
var value = innerDictKvp.Value;
但是,您无法预测该键将是什么。
如果您具有选择键,则应获取以下值:
var innerKey = "myKey";
var innerDictKvp = levelProgress[key].First(kvp => kvp.Key == innerKey);
var value = innerDictKvp.Value;
Ps,如果不确定密钥是否存在,则应使用FirstOrDefault
。
编辑:
对于不支持LINQ的.Net的旧版本:
var innerDict = levelProgress[key];
IEnumerator enumerator = innerDict.Keys.GetEnumerator();
enumerator.MoveNext(); // Get first item
var firstKey = enumerator.Current as string;
var firstVal = (int)innerDict[firstKey];
string secondDictionaryKey = "";
string secondDictionaryValue = "";
foreach (int key in levelProgress.Keys)
{
Dictionary<string, int> storedDictionary;
if (!levelProgress.TryGetValue(key, out storedDictionary))
continue;
foreach(string k in storedDictionary.Keys)
{
secondDictionaryKey = k;
secondDictionaryValue = storedDictionary[k];
break;
}
break;
}
您应该可以按照以下方式在Linq中写这些:
levelProgress.FirstOrDefault(x=>x.Key == key).Value.FirstOrDefault().Key;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.