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
方法,返回一个新的列表对象作为结果。