我想选择优雅的foreach独特情侣(出发时间,到达时间,旅行等级),最好的记录以较低的价格在表格中加粗。
这低于给我带来结果的代码。
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 :(得分:2)
.GroupBy(m => new {
m.DepartureTime,
m.ArrivalTime,
m.TravelClass
})
.Select(g => g.OrderBy(x => x.Price).First());
答案 1 :(得分:0)
您应该可以执行以下操作:
var result = yourRepo.OrderBy(p => p.Price)
.ThenBy(n => n.Name)
.Take(stuff.Select(q => q.Name)
.Distinct()
.Count());
答案 2 :(得分: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; }
}
}
输出给出:
最便宜的航班,出发时间为01/08/2013 09:13:00,抵达时间为01/08/2013 10:14:00,旅行舱经济费用2000
最便宜的航班,出发时间为01/08/2013 09:13:00,抵达时间为2013年8月1日10:14:00,旅游舱首次出发费用为3600
最便宜的航班,出发时间为01/08/2013 10:11:00,抵达时间为01/08/2013 11:14:00,旅行舱经济费用2000
最便宜的航班,出发时间为01/08/2013 10:11:00,抵达时间为2013年8月1日11:14:00,旅游舱首先需要花费2800