我有一份航班价格数据表,我希望将最便宜的1个航班返回到每个目的地。该表包含以下基本字段:
FlightInfoID
AirportFrom
AirportTo
Price
我尝试了以下但是它没有返回我预期的结果,因为特定目的地有多个项目,我只想要每个目的地1个结果,所以如果我有50个目的地,我会得到50个项目。
lstBestFlightDealsForAllRoutes.OrderBy(p=> p.Price).GroupBy(x => x.AirportTo).First();
答案 0 :(得分:7)
from f in lstBestFlightDealsForAllRoutes
group f by new { f.AirportFrom, f.AirportTo } into g // group by route
select g.OrderBy(x => x.Price).First() // select cheapest flight
答案 1 :(得分:4)
Lniq让2变得困难(最小功能无用),但是您可以通过按价格排序每个组并从每个组中选择第一个来实现(性能成本较低),例如
flights.GroupBy(f => f.Destination).Select(g => g.OrderBy(f => f.Cost)).Select(g => g.First())