0

いくつかのリアルタイム データ表現のために、マージする必要がある 2 つの辞書を使用しています。

 //Orderdata string,orderdetails int,day int,hour int,count
 var OldData = new Dictionary<string, Dictionary<int, Dictionary<int, Dictionary<int, int>>>>();
 var TodayData = new Dictionary<string, Dictionary<int, Dictionary<int, Dictionary<int, int>>>>();

これらの 2 つの辞書をマージするのに最適なものは何ですか?

この状況では、いくつかの重複があると確信しています

4

1 に答える 1

1

このようなものは、各レベルで辞書をマージします。ただし、「リーフ」レベルで何をしたいのかを明確にする必要があります。この場合、ネストされたすべての辞書で同じ複合キーを持つ値は、oldData から todayData に置き換えられるだけだからです。

private void MergeDictionaries()
{
    var oldData = new Dictionary<string, Dictionary<int, Dictionary<int, Dictionary<int, int>>>>();
    var todayData = new Dictionary<string, Dictionary<int, Dictionary<int, Dictionary<int, int>>>>();

    foreach (var kvp in oldData)
    {
        Dictionary<int, Dictionary<int, Dictionary<int, int>>> today;
        if (!todayData.TryGetValue(kvp.Key, out today))
        {
            today = new Dictionary<int, Dictionary<int, Dictionary<int, int>>>();
            todayData.Add(kvp.Key, today);
        }

        foreach (var kvp2 in kvp.Value)
        {
            Dictionary<int, Dictionary<int, int>> today2;
            if (!today.TryGetValue(kvp2.Key, out today2))
            {
                today2 = new Dictionary<int, Dictionary<int, int>>();
                today.Add(kvp2.Key, today2);
            }

            foreach (var kvp3 in kvp2.Value)
            {
                Dictionary<int, int> today3;
                if (!today2.TryGetValue(kvp3.Key, out today3))
                {
                    today3 = new Dictionary<int, int>();
                    today2.Add(kvp3.Key, today3);
                }

                foreach (KeyValuePair<int, int> kvp4 in kvp3.Value)
                {
                    // What you do here determines what happens when there are key duplicates
                    today3[kvp4.Key] = kvp4.Value;
                }
            }
        }
    }
}
于 2013-09-27T16:36:06.247 に答える