2013-03-11 17 views
5

Uçuş fiyat verilerinin bir tablo var ve ben her hedef hedefe üst 1 ucuz uçuş dönmek istiyorum bir alt kümesi üst bir öğe dönün. tablo aşağıdaki temel alanlara sahiptir:Linq GroupBy. veri

FlightInfoID 
AirportFrom 
AirportTo 
Price 

Denedim aşağıdaki ama orada belirli bir hedef için birden çok öğe vardı ve ben 50 varsa yüzden sadece hedefe başına 1 sonuç istediğiniz gibi beklediğim sonuç vermedi Gidilecek yerler 50 ürün alırdım.

lstBestFlightDealsForAllRoutes.OrderBy(p=> p.Price).GroupBy(x => x.AirportTo).First(); 
+1

anahtarı GroupBy ve orderby. – Romoku

cevap

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

Bu hile bitti, iyi iş çocuklar! – Damo

4
  1. Grup her gruptan itibaren hedefe
  2. tarafından uçuşlar

Lniq yapar grubunda en ucuz uçuşu seçin 2 zor (Minimum fonksiyon faydasız), ancak bunu yapabilirsin (küçük bir performans maliyeti ile) her bir gruba fiyat olarak sipariş vermek ve her gruptan ilkini seçerek, örn.

flights.GroupBy(f => f.Destination).Select(g => g.OrderBy(f => f.Cost)).Select(g => g.First())