كيفية جلب البيانات من تداخل القاموس في c#

StackOverflow https://stackoverflow.com/questions/1801905

  •  05-07-2019
  •  | 
  •  

سؤال

أنا بحاجة إلى جلب البيانات من تداخل القاموس في 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]);
    }
}

نصائح أخرى

وهو ينق الجواب (أن يقرأ كل يتضاعف ثلاث مرات):

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);

محاولة:

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;
        }
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top