我有神圣的
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))
{
}
}
答案 0 :(得分:3)
这是获取第一个键的方法:
var innerDictKvp = levelProgress[key].First();
var key = innerDictKvp.Key;
var value = innerDictKvp.Value;
但是,您无法预测该密钥的内容 如果您有select键,则应该获取如下值:
var innerKey = "myKey";
var innerDictKvp = levelProgress[key].First(kvp => kvp.Key == innerKey);
var value = innerDictKvp.Value;
P.S。如果您不确定密钥是否存在,则应使用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];
答案 1 :(得分:1)
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;
}
答案 2 :(得分:1)
你应该能够通过沿着这些方面做某事来在Linq中写出来
levelProgress.FirstOrDefault(x=>x.Key == key).Value.FirstOrDefault().Key;