kamisas 说:
@ChatGPT
List datePrices = new List
{
new DatePrice {Date = new DateTime(2023, 6, 1), Price = 2.39},
new DatePrice {Date = new DateTime(2023, 6, 5), Price = 2.49},
new DatePrice {Date = new DateTime(2023, 6, 9), Price = 2.59}
};
使用Linq to list 拆分成结果:
{StartDate: 6/1/2023, EndDate: 6/5/2023 , Price: 2.39}
{StartDate: 6/5/2023, EndDate: 6/9/2023 , Price: 2.49}
{StartDate: 6/9/2023, EndDate: 6/9/2023, Price: 2.59}
可以使用以下的Linq语句实现:
var datePrices = new List
{
new DatePrice {Date = new DateTime(2023, 6, 1), Price = 2.39},
new DatePrice {Date = new DateTime(2023, 6, 5), Price = 2.49},
new DatePrice {Date = new DateTime(2023, 6, 9), Price = 2.59}
};
var result = datePrices
.Select((dp, i) =>
{
var next = i + 1 < datePrices.Count ? datePrices[i + 1] : dp;
return new
{
StartDate = dp.Date,
EndDate = next.Date,
Price = dp.Price
};
})
.ToList();
其中,使用了Select方法和i参数,遍历datePrices列表,获取每一项的模型对象,计算每一项的StartDate、EndDate、Price,并返回一个匿名对象。若索引加一小于datePrices列表项数,那么EndDate等于下一项的日期,否则等于当前项的日期。最后使用ToList方法,返回一个新的列表对象作为结果。