访问 LINQ 结果 - 什么是更好的方法

本文关键字:更好 方法 什么 LINQ 结果 访问 | 更新日期: 2023-09-27 17:59:49

所以我有一组来自API调用的数据,我需要使用。我过滤以更正子集并使用下面的代码访问特定字段。有没有更好的方法来获得currentDatebeforeCurrentDate

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 结果的"结束日期"字段,以及上一个结果的"开始日期"字段。开始日期到结束日期期间的上一个 ito。ID 字段没有用,因为可以在当前日期范围之后捕获以前的日期范围。

访问 LINQ 结果 - 什么是更好的方法

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);

您可以通过约束年份并选择替换foreach循环的Last()来获取财政年度的当前日期:

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);