static void Main(string[] args)
{
List <FlightInfo> flights = FlightInfo.ReadFlightsFromFile("airline-on-time-performance-sep2014-us.csv");
var query1 = from flight in flights
where flight.Origin == "Boston MA"
where flight.Destination == "Chicago IL"
select flight.ArrivalDelay;
var query2 = (from flight in flights
where flight.Destination == "Monterey CA"
select flight.Origin).Distinct();
var query3 = (from flight in flights
orderby flight.ArrivalDelay descending
select new { flight.Origin, flight.Destination, flight.ArrivalDelay }
).Take(10);
var query4 = from flight in flights.Take(20)
select flight.Destination;
var query5 = (from flight in flights
select flight.ArrivalDelay).Average();
var query6 = (from flight in flights
orderby flight.Distance ascending
select new { flight.Origin, flight.Destination, flight.Distance }
).Take(1);
var query7 = (from flight in flights
where flight.Origin == "San Francisco CA"
orderby flight.Distance descending
select flight
).Take(1);
var query8 = (from flight in flights
where flight.Origin == "Boston MA"
let weightedDelay = flight.ArrivalDelay / (double)flight.Distance
orderby weightedDelay descending
select flight
).Take(1);
var query9 = (from flight in flights
where flight.Origin == "Seattle WA"
where flight.ArrivalDelay <= 0
select flight
).Count();
var query10 = (from flight in flights
group flight.DepartureDelay by flight.Origin into g
let averageDelay = g.Average()
orderby averageDelay descending
select new { Airport = g.Key, DepartureDelay = averageDelay }
).Take(10);
var query11 = (from flight in flights
where flight.Origin == "New York NY"
group flight.ArrivalDelay by flight.Airline into g
let averageDelay = g.Average()
orderby averageDelay descending
select new { Airline = g.Key, ArrivalDelay = averageDelay }
).Take(1);
var query12 = (from flight in flights
where flight.Airline == "AA"
group flight.DepartureDelay by flight.Origin into g
let averageDelay = g.Average()
orderby averageDelay descending
select new { Origin = g.Key, DepartureDelay = averageDelay }
).Take(1);
// Note: this query takes a long time to run. Either be patient, or make the file smaller
// by removing some entries.
var query13 = (from leg1 in flights
where leg1.Origin == "Boston MA"
from leg2 in flights
where leg2.Origin == leg1.Destination
where leg2.Destination == "Los Angeles CA"
let totalDelay = leg1.DepartureDelay + leg1.ArrivalDelay + leg2.DepartureDelay + leg2.ArrivalDelay
group totalDelay by new { O1 = leg1.Origin, O2 = leg1.Destination, D = leg2.Destination } into g
let averageTotalDelay = g.Average()
orderby averageTotalDelay ascending
select g.Key
).Take(1);
}