我需要从嵌套字典中获取数据IN C#。我的解释是这样的:如何从C#中的嵌套字典中获取数据#
static Dictionary<string, Dictionary<ulong, string>> allOffset =
new Dictionary<string, Dictionary<ulong, string>>();
我需要获取所有键/全字典的值,表示像这样:提前
string->>ulong, string
感谢。
我需要从嵌套字典中获取数据IN C#。我的解释是这样的:如何从C#中的嵌套字典中获取数据#
static Dictionary<string, Dictionary<ulong, string>> allOffset =
new Dictionary<string, Dictionary<ulong, string>>();
我需要获取所有键/全字典的值,表示像这样:提前
string->>ulong, string
感谢。
遍历外字典,每次迭代嵌套字典的成员,即
(未经测试代码)
foreach(var key1 in dc.Keys)
{
Console.WriteLine(key1);
var value1 = dc[key1];
foreach(var key2 in value1.Keys)
{
Console.WriteLine(" {0}, {1}", key2, value1[key2]);
}
}
尝试:
string s = dict["key"][_float_];
为了得到整个列表,你可以使用嵌套的foreach循环:
StringBuilder sb=new StringBuilder();
foreach (var v in dict)
{
sb.Append(v.Key+"=>>");
foreach (var i in v.Value)
{
sb.Append(i.Key + ", " + i.Value);
}
sb.Append(Environment.NewLine);
}
Console.WriteLine(sb);
这个怎么样,该方法将通过所有字典项列举...
public static IEnumerable<KeyValuePair<ulong, string>> GetValues()
{
foreach (var pair in allOffset.Values)
{
foreach (var value in pair)
{
yield return value;
}
}
}
一个LINQ答案(读取所有的三元组):
var qry = from outer in allOffset
from inner in outer.Value
select new {OuterKey = outer.Key,InnerKey = inner.Key,inner.Value};
或(直接得到字符串) :
var qry = from outer in allOffset
from inner in outer.Value
select outer.Key + "->>" + inner.Key + ", " + inner.Value;
foreach(string s in qry) { // show them
Console.WriteLine(s);
}
或者一个在线解决方案
allOffset.SelectMany(n => n.Value.Select(o => n.Key+"->>"+o.Key+","+ o.Value))
.ToList()
.ForEach(Console.WriteLine);
打败了我。我试图用点符号来实现,但我无法弄清楚如何在不改用糖语法的情况下获得“内部”。 ; P +1,很棒的回答! – jrista 2009-11-26 06:56:34