1. ホーム
  2. c#

[解決済み] 2つの日付の間にあるすべての日付の配列またはリストを作成する [重複] [重複

2022-04-21 19:01:08

質問

日付をX軸にした多系列のグラフを作成しています。

問題は、グラフ内のすべてのシリーズが、日付範囲内で同じ日付を持つわけではないことです。 つまり、2月1日から4月30日を選択した場合、ある系列は2月1日から3月末までのデータを持ち、別の系列は日付範囲全体のデータを持っている可能性があります。

これでは、作成すべきチャートが歪んでしまいます。 クエリの最初に取得した日付範囲があれば、日付のリストを生成して、グラフ化するデータを入力し、データがない日付については、これらのシリーズに0を埋め込むようにしたいと思います。

どのように解決するのですか?

LINQです。

Enumerable.Range(0, 1 + end.Subtract(start).Days)
          .Select(offset => start.AddDays(offset))
          .ToArray(); 

ループのため。

var dates = new List<DateTime>();

for (var dt = start; dt <= end; dt = dt.AddDays(1))
{
   dates.Add(dt);
}

EDIT 時系列でのデフォルト値のパディングについては、日付範囲内のすべての日付を列挙し、ある日付の値が存在する場合はその系列から直接、そうでない場合はデフォルトを選ぶことができます。たとえば、以下のようになります。

var paddedSeries = fullDates.ToDictionary(date => date, date => timeSeries.ContainsDate(date) 
                                               ? timeSeries[date] : defaultValue);