【发布时间】:2015-02-21 01:26:08
【问题描述】:
我面临排序列表的问题,我试图找到最便宜的值。排序不是问题,它返回的值是问题和我想要满足的条件。
基本上,我的结果集中可能有 0 个值,这是因为这些项目已被暂时搁置,因此它们没有值,但报价仍然到达。
想法是按总价值对结果进行排序,然后取出列表中理论上最便宜的第一项。
void Main()
{
GetCheapest();
}
public void GetCheapest()
{
List<Car> numbers = new List<Car>
{
new Car() { Type="dearest", Total = 990 },
new Car() { Type="", Total = 570 },
new Car() { Type="", Total = 907 },
new Car() { Type="cheapest", Total = 0 },
new Car() { Type="", Total = 333 },
new Car() { Type="", Total = 435 },
new Car() { Type="", Total = 435 }
};
//order ascending
IEnumerable<Car> query = numbers.OrderBy( q => q.Total );
//set the cheapest to be the first index in the sorted IEnumerable
var cheapest = query.First();
//output the cheapest
Console.Write( cheapest.Type + " - £" + cheapest.Total + ", Winning!!" );
//new line
Console.WriteLine( Environment.NewLine );
//output each one
foreach( Car q in query )
{
Console.WriteLine( q.Type + " - £" + q.Total );
}
}
//Quote Object
public class Car
{
public decimal Total { get; set; }
public string Type { get; set; }
}
总结 我想遍历返回的列表,直到找到一个值大于 0 的索引。
给出的例子的答案是 333。
如果有人对此有更好的想法,我愿意尝试。
到目前为止,我已经查看了关于 SO 的这些问题,不给出了答案:
【问题讨论】:
-
我很困惑......您发布的代码已经这样做了,对吧?您在寻找更好的方法吗?
-
@HaukurHaf 是的,它确实给出了最便宜的值,即 0,但 0 不是一个值,高于 0 的任何值都是最便宜的值。
-
当然是的 :-) 然后我只需添加一个 where 语句以在订购前排除 0 的值,然后取第一个。编辑:就像下面 D Stanley 的回答一样。