using System.Collections.Generic;
public static void Main()
var root = JsonConvert.DeserializeObject<RootObject>(json);
var bestTravelClass = root.TravelClasses
.SelectMany(tc => tc.Fares, (tc, f) => new { TravelClass = tc, f.Fare.TotalFare })
.OrderBy(a => a.TotalFare)
.Select(a => a.TravelClass)
Console.WriteLine("Name: " + bestTravelClass.Name);
Console.WriteLine("Type: " + bestTravelClass.Type);
Console.WriteLine("Code: " + bestTravelClass.Code);
Console.WriteLine("Available Seats: " + bestTravelClass.AvailableSeats);
Console.WriteLine("--- Fares ---");
foreach (var fare in bestTravelClass.Fares)
Console.WriteLine("Reference ID: " + fare.ReferenceId);
Console.WriteLine("Total Fare: " + fare.Fare.TotalFare + " " + fare.Fare.Currency.Code);
Console.WriteLine("Tax: " + fare.Fare.Tax);
[JsonProperty("travelClasses")]
public List<TravelClass> TravelClasses { get; set; }
public partial class TravelClass
public List<FareElement> Fares { get; set; }
[JsonProperty("availableSeats")]
public int AvailableSeats { get; set; }
public string Type { get; set; }
public string Code { get; set; }
public string Name { get; set; }
public partial class FareElement
[JsonProperty("referenceId")]
public string ReferenceId { get; set; }
public FareFare Fare { get; set; }
public partial class FareFare
public decimal Tax { get; set; }
[JsonProperty("totalFare")]
public decimal TotalFare { get; set; }
[JsonProperty("currency")]
public Currency Currency { get; set; }
public partial class Currency
public string Code { get; set; }
[JsonProperty("exchangeRate")]
public decimal ExchangeRate { get; set; }