/// <summary>
        /// 指定された期間内のデータのみをフィルタリングします。
        /// </summary>
        /// <param name="log">資材の時系列データ</param>
        /// <param name="period">描画対象期間</param>
        /// <returns></returns>
        public static IEnumerable<TimeMaterialsPair> Within(this IEnumerable<TimeMaterialsPair> log, DisplayedPeriod period)
        {
            if (log.Count() == 0)
                yield break;

            TimeSpan periodSpan = period.ToTimeSpan();

            // 期間の直前のデータはとっておく
            if (log.Any(d => DateTime.Now - d.DateTime > periodSpan))
            {
                yield return log.Last(d => DateTime.Now - d.DateTime > periodSpan);
            }

            if (log.Any(d => DateTime.Now - d.DateTime <= periodSpan))
            {
                foreach (var data in log.Where(d => DateTime.Now - d.DateTime <= periodSpan))
                {
                    yield return data;
                }
            }
        }
Пример #2
0
        /// <summary>
        /// 指定された期間内のデータのみをフィルタリングします。
        /// </summary>
        /// <param name="log">資材の時系列データ</param>
        /// <param name="period">描画対象期間</param>
        /// <returns></returns>
        public static IEnumerable <TimeMaterialsPair> Within(this IEnumerable <TimeMaterialsPair> log, DisplayedPeriod period)
        {
            if (log.Count() == 0)
            {
                yield break;
            }

            TimeSpan periodSpan = period.ToTimeSpan();

            // 期間の直前のデータはとっておく
            if (log.Any(d => DateTime.Now - d.DateTime > periodSpan))
            {
                yield return(log.Last(d => DateTime.Now - d.DateTime > periodSpan));
            }

            if (log.Any(d => DateTime.Now - d.DateTime <= periodSpan))
            {
                foreach (var data in log.Where(d => DateTime.Now - d.DateTime <= periodSpan))
                {
                    yield return(data);
                }
            }
        }