所以我需要使用API调用中的一组数据。我过滤以纠正子集并使用下面的代码访问特定字段。是否有更好的方法来获取currentDate
和beforeCurrentDate
?
DateTime beforeCurrentDate, currDate;
var curr = from c in GlobalResults<FinancialYear>.Results
where c.IsCurrentYear = true
select c;
var prev = from c in GlobalResults<FinancialYear>.Results
where c.ID < curr.FirstOrDefault().ID && c.YearEnd == curr.FirstOrDefault ().YearStart.AddDays(-1)
select c;
foreach (var cfy in curr)
{
currDate = cfy.YearEnd;
}
foreach (var pfy in prev)
{
beforeCurrentDate = pfy.YearStart.AddDays (-1);
}
我知道foreach是错误的,所以我该怎么用?
编辑:API结果包含的是一组日期,其中一个日期的IsCurrent字段设置为true。我想要IsCurrent = true结果的EndDate字段,以及前一个结果的StartDate字段。以前的StartDate到EndDate期间。 ID字段没有用,因为可以在当前日期范围之后捕获上一个日期范围。
答案 0 :(得分:2)
var curr = GlobalResults<FinancialYear>.Results.FirstOrDefault(c => c.IsCurrentYear);
var prev = GlobalResults<FinancialYear>.Results.FirstOrDefault(c => c.ID < curr.ID && c.YearEnd == curr.YearStart.AddDays(-1));
var currDate = curr.YearEnd;
var beforeCurrentDate = prev.YearStart.AddDays(-1);
答案 1 :(得分:0)
您可以通过约束年份并选择Last()
替换foreach
循环来获取本财政年度的当前日期:
var currYear = GlobalResults<FinancialYear>.Results.Where(p=>p.IsCurrentYear == true).Last();
var currDate = currYear.YearEnd;
同样,您可以使用currYear
获取以前的信息:
var prevYear = GlobalResults<FinancialYear>.Results.Where(p=>p.YearEnd == currDate.AddDays(-1)).FirstOrDefault();
var beforeCurrentDate = prevYear.YearStart.AddDays(-1);