本文整理汇总了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;
}
示例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;
}