对不起标题,不能解释任何其他问题!
所以我有一个代表某人工作时间的小时表。
[在这些小时内,我锻炼每天在特定时间之前工作了多少小时,例如晚上10:00之前,之后多少?
我的班级属性在下面。
我需要遍历这些小时的清单,并进行处理。
棘手的部分是,当您工作超过50个小时后,您将获得不同的报酬,因此,低于50岁的所有事物的报酬都是一种,而超过50岁的所有事物的报酬更高。
因此,我需要遍历并找出总时数达到50的确切时间,然后知道这50个小时中有多少小时是“截止前”,多少是“截止后”。然后在50点后的工作时间内执行相同操作。
下面的小时数道具将由((HoursBeforeCuttOff + HoursAfterCutOff)组成]
我想不到如何实现这一目标,欢迎提出任何想法
public double Hours { get; set; }
public double HoursBeforeCuttOff { get; set; }
public double HoursAfterCutOff { get; set; }
如果我理解正确,那应该可以。
double hoursSum = 0;
double hoursSumBeforeCutoffUnder50 = 0;
double hoursSumAfterCutoffUnder50 = 0;
double hoursSumBeforeCutoffOver50 = 0;
double hoursSumAfterCutoffOver50 = 0;
foreach(var h in listOfHours)
{
if(hoursSum >= 50)
{
// we're over 50, just add the hours before and after cutoff to the sums
// hoursSum can be ignored from here on, it's no longer used.
hoursSumBeforeCutoffOver50 += h.HoursBeforeCutoff;
hoursSumAfterCutoffOver50 += h.HoursAfterCutoff;
}
else if(hoursSum + h.Hours > 50)
{
// this entry will pass the line of 50 hours. The hours are added depending of where the line is crossed
if(hoursSum + h.HoursBeforeCutoff > 50)
{
hoursSumBeforeCutoffUnder50 += 50 - hoursSum;
hoursSumBeforeCutoffOver50 += hoursSum + h.HoursBeforeCutoff - 50;
}
else { hoursSumBeforeCutoffOver50 += h.HoursBeforeCutoff; }
hoursSum += h.HoursBeforeCutoff;
if(hoursSum < 50)
{
hoursSumAfterCutoffUnder50 += 50 - hoursSum;
hoursSumAfterCutoffOver50 += hoursSum + h.HoursAfterCutoff - 50;
}
else { hoursSumAfterCutoffOver50 += h.HoursAfterCutoff; }
hoursSum += h.HoursAfterCutoff;
}
else{
// the 50 hours are not yet reached, just add the hours
hoursSum += h.Hours;
hoursSumBeforeCutoffUnder50 += h.HoursBeforeCutoff;
hoursSumAfterCutoffUnder50 += h.HoursAfterCutoff;
}
}
如何:我在代码中写小时,所以这变成了伪代码。我假设您总是工作一个小时,列表中的每个条目都代表一个小时。如果您需要其他内容,则应相应地更新问题,包括数据模型。
var hoursBeforeCutOff = listOfHours.Where(h => h < 10:00pm).Take(50).ToList();
var hoursAfterCutOff = listOfHours.Where(h => h < 10:00pm).Skip(50).ToList();