2016-04-21 36 views
0

目的地可以有2個航班連接,例如航班:08在波士頓找到價格最低的航班組合

法蘭克福

法蘭克福 - 倫敦(:00-10:00,14:00-18 :00等)的航班號FL1,FL2

倫敦波士頓(在10:00-12:00,16:00-20:00等)的航班號LB1,LB2

每次飛行可能有類,如A,B等(從便宜到昂貴)

我已經笛卡爾如所有組合的:

FL1/A - LB1/A(FL1爲航班號/ A爲類)
FL1/A - LB1/B
FL1/B - LB1 /一個
FL1/B - LB1/B
...
FL2/B - LB2/B

我要出席年底的屏幕是什麼每個目標組合價格最低的航班:

FL1 /一個 - LB1/A
FL1/A - LB2/A
FL2/A - LB1/A
FL2/A - LB2/A

如何我LINQ查詢/查詢實現這一目標?

我該怎麼辦找到


我有目的地和飛行類價格最低的航班:

Class Destination 
{ 
    List<Flight> Flights 
} 

Class Flight{ 
    List<String> @Classes; //such as A,B,C,D,E 
    String FlightId;  
} 

到目前爲止,我可以有扁平化的列表航班:

var flights = destination.SelectMany(d=>d.flights); 

但我想不出如何繼續?

注:我希望我沒有犯錯,同時簡化了我的實際情況

下面是它看起來像我的HTML表格結構情況:

enter image description here

+1

不知道如果在你得出答案的方式是明確的,至少不對我來說。你只是在講一個按班的課程嗎? – Volearix

+0

對不起,我正在試圖從笛卡爾 –

+0

@octavioccl爲簡單的時刻使連接航班組合的最低票價讓我們保持它2連接航班。對於Flight of Destination類的屬性,我認爲我們可以認爲它只是「ConnectedFlight」。正如我提到的問題,我試圖使它的真實案例的簡單版本.. –

回答

0

對我來說是目前還不清楚,但如果每個地方都有兩個相連的航班

public class Destination 
{ 
    public Flight Flight1 {get;set;} 
    public Flight Flight2 {get;set;} 
} 

我會做這樣的事情:

var comb = (from dest in destinations 
       from fc1 in dest.Fligth1.Classes.Select(s=>new {FlightId=dest.Flight1.FlightId, Class=s}) 
       from fc2 in dest.Fligth2.Classes.Select(s=>new {FlightId=dest.Flight2.FlightId, Class=s}) 
       select new {fc1, fc2}).OrderBy(e=>e.fc1.Class).ThenBy(e=>fc2.Class); 

如果你想keet在Destination機票的名單,我想你可以使用列表索引:

var comb = (from dest in destinations 
       from fc1 in dest.Flights[0].Classes.Select(s=>new {FlightId=dest.Flights[0].FlightId, Class=s}) 
       from fc2 in dest.Flights[1].Classes.Select(s=>new {FlightId=dest.Flights[1].FlightId, Class=s}) 
       select new {fc1, fc2}).OrderBy(e=>e.fc1.Class).ThenBy(e=>e.fc2.Class); 
+0

感謝您的回答,讓我檢查一下 –

+0

嗨@asdf_enel_hak,在最後你嘗試用我的解決方案嗎? – octavioccl

+0

我在這些時候有點迷路,我會看看。讓我接受吧 –