访问 LINQ 结果 - 什么是更好的方法
本文关键字:更好 方法 什么 LINQ 结果 访问 | 更新日期: 2023-09-27 17:59:49
所以我有一组来自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 结果的"结束日期"字段,以及上一个结果的"开始日期"字段。开始日期到结束日期期间的上一个 ito。ID 字段没有用,因为可以在当前日期范围之后捕获以前的日期范围。
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);