【发布时间】:2018-11-15 01:41:41
【问题描述】:
我有以下课程;
public class PricePlan
{
public string Name { get; set; }
public List<Price> Prices { get; set; }
public PricePlan()
{
Prices = new List<Price>();
}
}
public class Price
{
public DateTime Date { get; set; }
public decimal Rate { get; set; }
public bool Free { get; set; }
public Price()
{
Free = false;
}
}
然后如下填充对象和列表;
PricePlan oPricePlan = new PricePlan();
oPricePlan.Name = "Standard Rate Plan";
Price oPrice;
DateTime oDate = DateTime.Today;
for (int x = 1; x < 10; x++)
{
oPrice = new Price();
oPrice.Date = oDate.AddDays(x);
oPrice.Rate = 10 * x;
oPricePlan.Prices.Add(oPrice);
}
oPrice = new Price();
oPrice.Date = oDate.AddDays(11);
oPrice.Rate = 10;
oPricePlan.Prices.Add(oPrice);
样本数据可能是:
02/01/2013,10,False
03/01/2013,20,False
04/01/2013,30,False
05/01/2013,40,False
06/01/2013,50,False
07/01/2013,60,False
08/01/2013,70,False
09/01/2013,80,False
10/01/2013,90,False
12/01/2013,10,False
使用
oPricePlan.Prices.Min(r => r.Rate)
我得到了 Rate 的最小值,或者 IndexOf[] 可以返回第一个实例。但是,我想返回 X 个最低费率。例如如何设置以下内容;
对于系统中的 1 Min rate(两个速率可能具有相同的 Min),将其设置为 0 零并将 Free bool 设置为 true
对于 2 Min rate(可能相同),将其设置为 0 零并将 Free bool 设置为 true
所以基本上我想找到最低的 X 个费率,更改找到的实际最低费率,并将 Free bool 标志设置为 true。
我应该考虑使用 LINQ,还是他们的首选方式?
【问题讨论】:
-
包括示例输出以澄清您的问题。我得出了与另一个回答者不同的结论。