データの配列(double [] data)と日時のリスト(List datetimes)があります。データ配列の各位置は、日時の位置に関連しています。つまり、data[i]はdatetimes[i]で収集されました。
次に、収集されたデータを1週間のパターン(7日、24時間)でフィルタリングします。だから、私は週のパターンを持っています:
class WeekPattern
{
List<DayPattern> week;
public WeekPattern(List<DayPattern> _week)
{
week = _week;
}
public bool isInRange(DateTime time)
{
return week.Any(i => i.isInRange(time));
}
}
class DayPattern
{
DayOfWeek day;
List<bool> hours;
public DayPattern(List<bool> _hours, DayOfWeek _day)
{
hours = _hours;
day = _day;
}
public bool isInRange(DateTime time)
{
if (time.DayOfWeek != day)
return false;
return hours[time.Hour];
}
}
範囲内の日時をフィルタリングするのは簡単です(私はすでにWeekpatternパターンオブジェクトを持っています)
double[] data = { 1, 2, 3, 4}
string[] times = { "23/01/2013 12:00", "23/01/2013 13:00", "23/01/2013 14:00", "23/01/2013 15:00" }
List<DateTime> datetimes = Array.ConvertAll(_times, time => DateTime.ParseExact(time, "dd/MM/yyyy HH:mm:ss", null)).ToList();
Weekpattern pattern... // Weekpattern object
List<DateTime> filter = datetimes.Where(i => pattern.isInRange(i)).ToList();
しかし、日時の代わりにデータフィルター(double []データフィルター)を取得するにはどうすればよいですか?日時のリストはフィルタリングされますか?
- 1は2013年1月23日12:00に収集されました
- 2は2013年1月23日13:00に収集されました
- 3は2013年1月23日14:00に収集されました
- 4は2013年1月23日15:00に収集されました
「水曜日、13:00〜14:00」の範囲があるとします。したがって、2と3のdoubleの配列を取得したいと思います。
data = { 2, 3 }