2016-10-04 55 views
0

我正在做一个应用程序,在该应用程序中,我给出了航班的ID,并且程序打印了该航班上所有乘客的信息。我设法做到这一点,以便我可以搜索带有身份证件的乘客,并打印出他正在乘坐的航班信息,但我无法以其他方式进行。有小费吗?这些是阵列:以相同的搜索条件从阵列中打印多行

Passenger[] passengers = new Passenger[] { 
      new Passenger("John", 100, 200), 
      new Passenger("Mark", 101, 200), 
      new Passenger("Charlie", 102, 201)}; 

    Flight[] flights = new Flight[] { 
      new Flight(200, "Berlin", "Moscow", "05.10.2016"), 
      new Flight(201, "Paris", "Madrid", "06.10.2016")}; 

乘客和航班具有相同的ID,所以我用它来连接数组。

回答

0

user2023861打我,但这里是一个更完整例如使用where子句来过滤航班上的结果ID 此处完整代码:https://github.com/drGarbinsky/PrintFlightsExample

var data = from f in flights 
        join p in passengers on f.ID equals p.Flight 
        where f.ID == searchId 
        select new { flight = f, passenger = p }; 

     if (data.Any()) 
     { 
      var format = "{0} departs {1} for {2} on flight {3} in seat {4} on {5}"; 
      foreach (var item in data) 
      { 
       Console.WriteLine(string.Format(format, item.passenger.Name, item.flight.Origin, item.flight.Destination,item.flight.ID, item.passenger.Seat, item.flight.Date)); 
      } 
     } 

输出看起来像:

John departs Berlin for Moscow on flight 200 in seat 100 on 05.10.2016 
Mark departs Berlin for Moscow on flight 200 in seat 101 on 05.10.2016 
0

您可以将阵列通过飞行ID这样的结合在一起:

var joined = from p in passengers 
      join f in flights on p.FlightId equals f.FlightId 
      select new { p, f }; 

然后可以遍历这样的:

foreach(var match in joined) { 
    Console.WriteLine("Passenger name = " + match.p.Name); 
    Console.WriteLine("Flight time = " + match.f.FlightTime); 
}