2016-04-21 51 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

我在这些时候有点迷路,我会看看。让我接受吧 –