使用Distinct从对象数组中获取最小值

时间:2014-03-10 13:22:15

标签: c# linq

我有一个Object数组,显示以下数据:

Arrival City|| Arrival Country      || Journey Date || Non-Stop Price || One-Stop Price || Multi-Stop Price
===========================================================================================================
SYD ||  AU ||   4/9/2014  ||    -   ||  -           ||863.79          ||903.29          || 
DEL ||  IN ||   4/10/2014 ||    -   ||  -           ||820.00          ||750.70          ||
SYD ||  AU ||   4/10/2014 ||    -   ||  -           ||923.70          ||903.70          ||
SYD ||  AU ||   4/15/2014 ||    -   ||  -           || 1455.91        ||1021.40         ||
CHI ||  US ||   4/25/2014 ||    -   ||  -           || -              ||191.90          ||146.00
CHI ||  US ||   5/1/2014  ||    -   ||  -           || -              ||201.90          ||143.00 

上表显示了City对及其票价。     我想要每个日期的最低价格,即2014年4月10日,所有三种价格中最低的 - 应该是 - 750.70

我尝试了Linq来获取日期,但我不知道如何获得特定日期的最低票价。

    var distict = result.Select(p => p.JourneyDate).Distinct();

1 个答案:

答案 0 :(得分:3)

我认为这最简单的方法是首先在日期进行GroupBy,然后获取您日期的非止损价格的最小值。

x.GroupBy(s => s.Date
            ).Select(s => new { 
                Date = s.Key, 
                Price = s.SelectMany(f => new Decimal[] { f.NonStopPrice, f.MultiStopPrice, f.OneStopPrice }).Min() 
            });

我假设你的价格是十进制的。