当前位置: 首页>>代码示例>>C#>>正文


C# IReadOnlyList.TakeWhile方法代码示例

本文整理汇总了C#中IReadOnlyList.TakeWhile方法的典型用法代码示例。如果您正苦于以下问题:C# IReadOnlyList.TakeWhile方法的具体用法?C# IReadOnlyList.TakeWhile怎么用?C# IReadOnlyList.TakeWhile使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在IReadOnlyList的用法示例。


在下文中一共展示了IReadOnlyList.TakeWhile方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: CreateEngineOils

 /// <summary>
 ///     创建发动机滑油监控记录。
 /// </summary>
 /// <remarks>
 ///     对每一台发动机,自滑油监控最后一条记录至当天,每天计算一条监控记录。
 ///     初始的时候,从最近一次装上开始计算。
 /// </remarks>
 /// <param name="lastTSR">最近一次装上记录</param>
 /// <param name="engineReg">发动机</param>
 /// <param name="flights">最近一次装上以来的飞行日志集合</param>
 private List<OilMonitor> CreateEngineOils(SnHistory lastTSR, EngineReg engineReg,
     IReadOnlyList<FlightLog> flights)
 {
     if (lastTSR == null) throw new ArgumentNullException("lastTSR");
     var oilMonitors = new List<OilMonitor>();
     // 开始计算日期
     var startDate = GetStartDate(lastTSR, flights);
     if (!flights.Any()) return oilMonitors;
     // 计算截止日期,飞行日志最后一天的次日,最后一天为当天的则为当天。
     var endDate = flights.Last().FlightDate.Date == DateTime.Today
         ? DateTime.Today
         : flights.Last().FlightDate.Date.AddDays(1);
     while (endDate.Subtract(startDate).TotalDays > 0)
     {
         decimal qsr, interval, deltaInterval, lastInterval;
         var tsr = flights.TakeWhile(f => f.FlightDate < startDate.AddDays(1)).Sum(f => f.FlightHours);
         switch (lastTSR.Position)
         {
             case Position.发动机1:
                 qsr =
                     flights.TakeWhile(f => f.FlightDate < startDate.AddDays(1))
                         .Sum(f => f.ENG1OilDep + f.ENG1OilArr);
                 lastInterval =
                     _unitOfWork.CreateSet<OilMonitor>()
                         .Where(o => o.IntervalRate > 0)
                         .Select(o => o.IntervalRate)
                         .FirstOrDefault();
                 CalIntervalOil(
                     flights.Select(
                         f => Tuple.Create(f.FlightDate, f.TakeOff, f.ENG1OilDep, f.ENG1OilArr, f.FlightHours))
                         .ToList(), startDate, out interval);
                 deltaInterval = lastInterval > 0 ? interval - lastInterval : 0;
                 oilMonitors.Add(CreateEngineOil(lastTSR, engineReg, startDate, tsr, qsr, interval, deltaInterval));
                 break;
             case Position.发动机2:
                 qsr =
                     flights.TakeWhile(f => f.FlightDate < startDate.AddDays(1))
                         .Sum(f => f.ENG2OilDep + f.ENG2OilArr);
                 lastInterval =
                     _unitOfWork.CreateSet<OilMonitor>()
                         .Where(o => o.IntervalRate > 0)
                         .Select(o => o.IntervalRate)
                         .FirstOrDefault();
                 CalIntervalOil(
                     flights.Select(
                         f => Tuple.Create(f.FlightDate, f.TakeOff, f.ENG2OilDep, f.ENG2OilArr, f.FlightHours))
                         .ToList(), startDate, out interval);
                 deltaInterval = lastInterval > 0 ? interval - lastInterval : 0;
                 oilMonitors.Add(CreateEngineOil(lastTSR, engineReg, startDate, tsr, qsr, interval, deltaInterval));
                 break;
             case Position.发动机3:
                 qsr =
                     flights.TakeWhile(f => f.FlightDate < startDate.AddDays(1))
                         .Sum(f => f.ENG3OilDep + f.ENG3OilArr);
                 lastInterval =
                     _unitOfWork.CreateSet<OilMonitor>()
                         .Where(o => o.IntervalRate > 0)
                         .Select(o => o.IntervalRate)
                         .FirstOrDefault();
                 CalIntervalOil(
                     flights.Select(
                         f => Tuple.Create(f.FlightDate, f.TakeOff, f.ENG3OilDep, f.ENG3OilArr, f.FlightHours))
                         .ToList(), startDate, out interval);
                 deltaInterval = lastInterval > 0 ? interval - lastInterval : 0;
                 oilMonitors.Add(CreateEngineOil(lastTSR, engineReg, startDate, tsr, qsr, interval, deltaInterval));
                 break;
             case Position.发动机4:
                 qsr =
                     flights.TakeWhile(f => f.FlightDate < startDate.AddDays(1))
                         .Sum(f => f.ENG4OilDep + f.ENG4OilArr);
                 lastInterval =
                     _unitOfWork.CreateSet<OilMonitor>()
                         .Where(o => o.IntervalRate > 0)
                         .Select(o => o.IntervalRate)
                         .FirstOrDefault();
                 CalIntervalOil(
                     flights.Select(
                         f => Tuple.Create(f.FlightDate, f.TakeOff, f.ENG4OilDep, f.ENG4OilArr, f.FlightHours))
                         .ToList(), startDate, out interval);
                 deltaInterval = lastInterval > 0 ? interval - lastInterval : 0;
                 oilMonitors.Add(CreateEngineOil(lastTSR, engineReg, startDate, tsr, qsr, interval, deltaInterval));
                 break;
             default:
                 throw new ArgumentOutOfRangeException();
         }
         startDate = startDate.AddDays(1);
     }
     return oilMonitors;
 }
开发者ID:unicloud,项目名称:FRP,代码行数:99,代码来源:OilDataProcess.cs

示例2: CreateAPUOils

 /// <summary>
 ///     创建APU滑油监控记录。
 /// </summary>
 /// <remarks>
 ///     对每一台APU,自滑油监控最后一条记录至当天,每天计算一条监控记录。
 ///     初始的时候,从最近一次装上开始计算。
 /// </remarks>
 /// <param name="lastTSR">最近一次装上记录</param>
 /// <param name="apuReg">APU</param>
 /// <param name="flights">最近一次装上以来的飞行日志集合</param>
 /// <returns>滑油监控记录集合。</returns>
 private List<OilMonitor> CreateAPUOils(SnHistory lastTSR, APUReg apuReg, IReadOnlyList<FlightLog> flights)
 {
     var oilMonitors = new List<OilMonitor>();
     // 开始计算日期
     var startDate = GetStartDate(lastTSR, flights);
     if (!flights.Any()) return oilMonitors;
     // 计算截止日期,飞行日志最后一天的次日,最后一天为当天的则为当天。
     var endDate = flights.Last().FlightDate.Date == DateTime.Today
         ? DateTime.Today
         : flights.Last().FlightDate.Date.AddDays(1);
     while (endDate.Subtract(startDate).TotalDays > 0)
     {
         decimal interval;
         var tsr = flights.TakeWhile(f => f.FlightDate < startDate.AddDays(1)).Sum(f => f.FlightHours);
         var qsr = flights.TakeWhile(f => f.FlightDate < startDate.AddDays(1))
             .Sum(f => f.ApuOilDep + f.ApuOilArr);
         var lastInterval =
             _unitOfWork.CreateSet<OilMonitor>()
                 .Where(o => o.IntervalRate > 0)
                 .Select(o => o.IntervalRate)
                 .FirstOrDefault();
         CalIntervalOil(
             flights.Select(f => Tuple.Create(f.FlightDate, f.TakeOff, f.ApuOilDep, f.ApuOilArr, f.FlightHours))
                 .ToList(), startDate, out interval);
         var deltaInterval = lastInterval > 0 ? interval - lastInterval : 0;
         oilMonitors.Add(CreateAPUOil(lastTSR, apuReg, startDate, tsr, qsr, interval, deltaInterval));
         startDate = startDate.AddDays(1);
     }
     return oilMonitors;
 }
开发者ID:unicloud,项目名称:FRP,代码行数:41,代码来源:OilDataProcess.cs


注:本文中的IReadOnlyList.TakeWhile方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。