以前にこの質問をして、datetime オブジェクトのコレクションを取得し、dayOfweek と時間でグループ化しました
要約すると、DateTimeのコレクションを取得します
List<DateTime> collectionOfDateTime = GetDateColletion();
そして、これを行うことにより、曜日と時刻でグループ化します
var byDayOfWeek = collectionOfDateTime.GroupBy(dt => dt.DayOfWeek + "-" + dt.Hour + "-" + dt.Minute);
したがって、この時点で、これらを週ごと (一貫した時間) にグループ化して完全に機能させています。
週ごとではなく月ごとにグループ化するという新しい要件があります。「月」というと、その月の同じ日ではなく、「毎月第一火曜日」のようなものです。
その月のロジック (月の第 1 火曜日、毎月第 2 金曜日など) に適合するすべてのアイテムをグループ化するために、グループで使用する「キー」を見つけようとしています。
例として、これらの日付を最初に持っていたとしましょう。
var date1 = new DateTime(2013, 1, 4).AddHours(8); // This is the first Friday in Jan
var date2 = new DateTime(2013, 2, 1).AddHours(8); // This is the first Friday in Feb
var date3 = new DateTime(2013, 1, 5).AddHours(3); // This is the first Sat in Jan
var date4 = new DateTime(2013, 2, 2).AddHours(3); // This is the first Sat in Feb
var date5 = new DateTime(2013, 2, 2).AddHours(6); // This is the first Sat in Feb - different time
これらが元の配列に入った日付である場合、3 つのグループになるには groupby が必要です。
- 最初のグループには、date1 と date2 が含まれます。
- 2 番目のグループには、date3 と date4 が含まれます。
- date5 は、異なる時間が与えられた他のグループのいずれにも一致しないため、それ自体になります。
とにかくその基準でグループ化することを誰かが提案できますか?