1

<Datetime,double>ほとんどが同じ範囲の日付 (2012 年 2 月 24 日から 2012 年 6 月 4 日まで) の辞書が 20 個あります。余分な日がある辞書もあれば、欠けている日がある辞書もあります。使用されているすべての一意の日付の配列が必要です。

現在、すべてのキーを反復処理し、ハッシュセットに追加して一意のセットを取得し、ハッシュセットを配列に変換しています。より効率的な方法はありますか?

レコードについては、辞書の containsKey 関数を反復処理して使用し、リストまたは LINQ に追加することも検討しました。私の既存のプロセスはうまくいくようです。

4

3 に答える 3

6

あなたが説明したコードは、あなたが得ることができる最も効率的なものです。
LINQ を使用すると、より少ないコード (および同様の効率) でそれを行うことができます。

dicts.SelectMany(d => d.Keys).Distinct().ToArray();
于 2012-09-12T19:24:15.770 に答える
0

「キーの重複」を許可するリストにすべての辞書をプルしてから、 Distinct 関数を使用できます。

        Dictionary<DateTime, double> dic = new Dictionary<DateTime, double>()
        {
            {DateTime.Now, 111}
        };

        Dictionary<DateTime, double> dic2 = new Dictionary<DateTime, double>()
        {
            {DateTime.Now, 111}
        };

        var list = dic.ToList();
        list.AddRange(dic2.ToList());

        var final = list.Distinct().ToDictionary(x => x.Key, x => x.Value);
于 2012-09-12T19:31:01.087 に答える