我有一个 Service
类。其中一个字段是 ServicePrice
对象的集合,它有一个 Price
和 СhangeDate
字段。
class Service
{
ObservableCollection<ServicePrice> ServicePrices {get; set;}
// other fields
}
class ServicePrice
{
int Price {get;set;}
DateTime ChangeDate {get;set;}
}
我需要找到某个时间点相关服务价格的方法。
public int? GetPriceAtDate(DateTime date)
{
// Do something here
int? ActualPrice = 0
return ActualPrice;
}
我正在寻找使用 LINQ MinBy 函数的解决方案:
public int? GetPriceAtDate(DateTime date)
{
return ServicePrices.MinBy(sp => (sp.ChangeDate - date).Duration()).Price;
}
但此函数将返回最近的日期,但不一定是过去的日期。从 future 获得产品的价格会很奇怪。
最佳答案
我会分两个阶段处理:
date
)public int? GetPriceAtDate(DateTime date) =>
ServicePrices
.Where(sp => sp.ChangeDate <= date)
.MaxBy(sp => sp.ChangeDate)?.Price;
https://stackoverflow.com/questions/74996814/