オブジェクトのコレクションがありDateTime
ます。この元のリストからサブコレクションを「解析」して、繰り返しに基づいて関連アイテムを取得する必要があります。だから私はこの単一のオリジナルコレクションを取る必要があります:
var collectionOfDateTime = GetDateTimeCollection();
そして、それをコレクションのリストに変換しDateTime
ます。各コレクションには、特定の再発パターンに従った最初のリストの日付のセットが含まれています。
以下の例では、時間を含めていませんが、実際の要件では、これらのアイテムには日付と時刻の両方の要素が含まれています。したがって、たとえば、日付は7日間隔である必要がありますが、同じ時刻である必要があります(2月3日の午前11時の1回は、2月10日の午後3時とは一致しませんが、2月10日の午前11時とは一致します)
たとえば、繰り返しパターンが「毎週」(他の場合は「毎月」)であり、日付コレクションは次のようになっているとします。
var date1 = DateTime.Today.AddHours(8);
var date2 = DateTime.Today.AddWeeks(1).AddHours(8);
var date3 = DateTime.Today.AddDays(3);
var date4 = DateTime.Today.AddWeeks(8).AddHours(6);
var collectionOfDateTime = new List<DateTime>() { date1, date2, date3, date4 };
関数(と呼びましょう)に、その「ウィークリー」という事実StripOutSubCollections()
を渡して、を含む1つのコレクションを返すようにします(これらはすべて同じウィークリースロットの一部であるため)。時間が他と一致しないため、date3は適合せず、date4も適合しないことに注意してくださいcollectionOfDateTime
date1
date2
要件を証明するのに役立つ別の例として、元のコレクションへの入力が次の場合:
var date1 = DateTime.Today;
var date2 = DateTime.Today.AddWeeks(1);
var date3 = DateTime.Today.AddDays(3);
var date4 = DateTime.Today.AddWeeks(8);
var date5 = DateTime.Today.AddDays(3).AddWeeks(2);
var collectionOfDateTime = new List<DateTime>() { date1, date2, date3, date4, date5 };
この関数が2つのリスト(1つは、、、および)を返し、もうdate1
1つはとを含むリストを返すようにします。date2
date4
date3
date5
要件を明確にするためにさらに例が必要かどうか教えてください。日付の1つが複数の出力リストに分類される可能性があることに注意してください。これは問題ありません。
毎週数字の7に変換して、最初のアイテムから最後まで、次に2番目のアイテムから最後まで、次に3番目のアイテムというように各アイテムをループすることができますが、もっとエレガントな方法があるかどうかを確認したかったのです。