2013-05-15 53 views
0

我想优先选择独特的情侣(发情时间,到达时间,旅游类别),在表格中以较低的价格粗体显示最佳记录。在c#列表中选择具有最大值的特定记录

这是低于代码的结果。

tripRepository.FindBy(x => x.SearchID == id).Include(b => b.Results) 


- DepartureTime   ArrivalTime   TravelClass Price 
==================================================================================== 

- 01/08/2013 09:13:00 01/08/2013 10:14:00  economy 4700 
- 01/08/2013 09:13:00 01/08/2013 10:14:00  first  8300 
- 01/08/2013 09:13:00 01/08/2013 10:14:00  economy 2750 
- **01/08/2013 09:13:00 01/08/2013 10:14:00  first  3600** 
- **01/08/2013 09:13:00 01/08/2013 10:14:00  economy 2000** 
- 01/08/2013 10:11:00 01/08/2013 11:14:00  economy 4700 
- 01/08/2013 10:11:00 01/08/2013 11:14:00  first  8300 
- 01/08/2013 10:11:00 01/08/2013 11:14:00  economy 2750 
- 01/08/2013 10:11:00 01/08/2013 11:14:00  first  2950 
- **01/08/2013 10:11:00 01/08/2013 11:14:00  economy 2000** 
- **01/08/2013 10:11:00 01/08/2013 11:14:00  first  2800** 

非常感谢你

+0

那你试试? – nvoigt

回答

0

你应该能够做到像下面这样:

var result = yourRepo.OrderBy(p => p.Price) 
        .ThenBy(n => n.Name) 
        .Take(stuff.Select(q => q.Name) 
           .Distinct() 
           .Count()); 
2
.GroupBy(m => new { 
    m.DepartureTime, 
    m.ArrivalTime, 
    m.TravelClass 
}) 
.Select(g => g.OrderBy(x => x.Price).First()); 
+0

+1好的解决方案。 –

0

以同样的方式,我张贴在这里:https://stackoverflow.com/a/16567385/2385557

试试这个:

public class Test 
{ 
    public void Exec() 
    { 
     var items = new List<Item>{ 
     new Item { DepartureTime = "01/08/2013 09:13:00", ArrivalTime = "01/08/2013 10:14:00", TravelClass="economy" , Price =  4700 }, 
     new Item { DepartureTime = "01/08/2013 09:13:00", ArrivalTime = "01/08/2013 10:14:00", TravelClass="first" , Price =  8300 }, 
     new Item { DepartureTime = "01/08/2013 09:13:00", ArrivalTime = "01/08/2013 10:14:00", TravelClass="economy" , Price =  2750 }, 
     new Item { DepartureTime = "01/08/2013 09:13:00", ArrivalTime = "01/08/2013 10:14:00", TravelClass="first" , Price =  3600 }, 
     new Item { DepartureTime = "01/08/2013 09:13:00", ArrivalTime = "01/08/2013 10:14:00", TravelClass="economy" , Price =  2000 }, 
     new Item { DepartureTime = "01/08/2013 10:11:00", ArrivalTime = "01/08/2013 11:14:00", TravelClass="economy" , Price =  4700 }, 
     new Item { DepartureTime = "01/08/2013 10:11:00", ArrivalTime = "01/08/2013 11:14:00", TravelClass="first" , Price =  8300 }, 
     new Item { DepartureTime = "01/08/2013 10:11:00", ArrivalTime = "01/08/2013 11:14:00", TravelClass="economy" , Price =  2750 }, 
     new Item { DepartureTime = "01/08/2013 10:11:00", ArrivalTime = "01/08/2013 11:14:00", TravelClass="first" , Price =  2950 }, 
     new Item { DepartureTime = "01/08/2013 10:11:00", ArrivalTime = "01/08/2013 11:14:00", TravelClass="economy" , Price =  2000 }, 
     new Item { DepartureTime = "01/08/2013 10:11:00", ArrivalTime = "01/08/2013 11:14:00", TravelClass="first" , Price =  2800 }, 

    }; 

     var result = items 
         .GroupBy(groupedItems => new { groupedItems.DepartureTime, groupedItems.ArrivalTime, groupedItems.TravelClass }) 
         .SelectMany(i => items 
              .Where(innerItem => 
                    (innerItem.DepartureTime == i.Key.DepartureTime 
                    && innerItem.ArrivalTime == i.Key.ArrivalTime 
                    && innerItem.TravelClass == i.Key.TravelClass) 
                    && innerItem.Price == i.Min(ii => ii.Price)) 
              .Select(innerItem => innerItem) 
              ); 

     foreach (var item in result) 
      Console.WriteLine("Cheapest flight with departure at {0}, arrival at {1} and in travel class {2} costs {3}", item.DepartureTime, item.ArrivalTime, item.TravelClass, item.Price); 

    } 

    private class Item 
    { 
     public String DepartureTime { get; set; } 
     public String ArrivalTime { get; set; } 
     public String TravelClass { get; set; } 
     public Int32 Price { get; set; } 
    } 

} 

输出给:

与出发

最便宜的航班在2013年1月8日9时13分○○秒,抵达2013年1月8日10:14:00,并在旅行类经济成本2000

与出发最便宜的航班在2013年1月8日9时13分00秒,抵达2013年1月8日10:14:00,并在旅游类第一成本3600 01/08

最便宜的航班起飞与/ 2013 10:11:00,到达01/08/2013 11:14:00并在旅行类经济成本2000

与出发最便宜的航班在2013年1月8日10:11:00,抵达2013年1月8日11:14:00,并在旅游类第一成本2800

相关问题