我正在尝试逐月计算一整年的总小时数。但是,我已经遇到了几个月的问题,该问题在一周中结束并开始。这是我的解决方案,但是,我必须对 linq 进行硬编码才能在这个特定的星期日期工作。在这个例子中
WeekStart is Febuary 26 2012 - SUNDAY
WeekEnd is March 1 2012 - THURSDAY
现在在我的硬编码示例中,当它是正常的一周时,它被使用(参考 sumval)
.ToUpper()).Sum(y => y.TOTALHOURS).Value;
当它是下个月的拆分周时,它将使用(参考 sumval1)
.ToUpper()).Sum(y => y.THURSDAY + y.FRIDAY + y.SATURDAY).Value;
当是上个月的拆分周时(请参阅 sumval2)
.ToUpper()).Sum(y => y.SUNDAY + y.MONDAY + y.TUESDAY + y.WEDNESDAY).Value;
基于这些,小时数将按两个月之间的周数计入适当的月份。
问题是我不想在一周中的这些日子硬编码,我如何动态填充应该为 sumval1 和 sumval2 添加的日子
double sumval = data.Where(x =>
//ExportHelper.isSplitWeek(x.WKENDDATE, x.WKENDDATE.AddDays(6)) != true &&
x.PORTFOLIO.ToUpper() == item.portfolio.ToUpper() &&
x.PHASE.ToUpper() == portitem.phase.ToUpper() &&
x.PHASEDESCRIPTION.ToUpper() == portitem.phasedesc.ToUpper() &&
x.WKENDDATE.ToString("MMM yyyy").ToUpper() == monitem.monthname.ToString()
.ToUpper()).Sum(y => y.TOTALHOURS).Value;
double sumval1 =
data.Where(x =>
ExportHelper.isSplitWeek(x.WKENDDATE, x.WKENDDATE.AddDays(6)) == true &&
x.PORTFOLIO.ToUpper() == item.portfolio.ToUpper() &&
x.PHASE.ToUpper() == portitem.phase.ToUpper() &&
x.PHASEDESCRIPTION.ToUpper() == portitem.phasedesc.ToUpper() &&
ExportHelper.getSplitEndDate(x.WKENDDATE).AddDays(1).ToString("MMM yyyy").ToUpper() == monitem.monthname.ToString()
.ToUpper()).Sum(y => y.THURSDAY + y.FRIDAY + y.SATURDAY).Value;
double sumval2 =
data.Where(x =>
ExportHelper.isSplitWeek(x.WKENDDATE, x.WKENDDATE.AddDays(6)) == true &&
x.PORTFOLIO.ToUpper() == item.portfolio.ToUpper() &&
x.PHASE.ToUpper() == portitem.phase.ToUpper() &&
x.PHASEDESCRIPTION.ToUpper() == portitem.phasedesc.ToUpper() &&
x.WKENDDATE.ToString("MMM yyyy").ToUpper() == monitem.monthname.ToString()
.ToUpper()).Sum(y => y.SUNDAY + y.MONDAY + y.TUESDAY + y.WEDNESDAY).Value;