C# 如何在c语言中从嵌套字典中获取数据#

C# 如何在c语言中从嵌套字典中获取数据#,c#,dictionary,C#,Dictionary,我需要从C#中的嵌套字典中获取数据。我的字典是这样的: static Dictionary<string, Dictionary<ulong, string>> allOffset = new Dictionary<string, Dictionary<ulong, string>>(); 提前感谢。试试: string s = dict["key"][_float_]; 要获取完整列表,可以使用嵌套的foreach循环:

我需要从C#中的嵌套字典中获取数据。我的字典是这样的:

static Dictionary<string, Dictionary<ulong, string>> allOffset = 
  new Dictionary<string, Dictionary<ulong, string>>();
提前感谢。

试试:

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;
        }
    }
}
公共静态IEnumerable GetValues()
{
foreach(allOffset.Values中的变量对)
{
foreach(成对的var值)
{
收益回报值;
}
}
}
LINQ答案(读取所有三元组):

或(直接获取字符串):

还是单线解决方案

allOffset.SelectMany(n => n.Value.Select(o => n.Key+"->>"+o.Key+","+ o.Value))
         .ToList()
         .ForEach(Console.WriteLine);

把我揍一顿。我试着用点表示法,但我不知道如何在不切换到sugar语法的情况下获得“inner”;P+1,回答得很好!
public static IEnumerable<KeyValuePair<ulong, string>> GetValues()
{
    foreach (var pair in allOffset.Values)
    {
        foreach (var value in pair)
        {
            yield return value;
        }
    }
}
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);