0

所以我有一组来自我需要使用的 API 调用的数据。我过滤以更正子集并使用下面的代码访问特定字段。有没有更好的方法来获取currentDateand 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 期间的前一个 ito。ID 字段没有用,因为可以在当前日期范围之后捕获先前的日期范围。

4

2 回答 2

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);
于 2013-02-18T14:59:44.433 回答
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);
于 2013-02-18T14:58:54.840 回答