2016-05-30 6 views
1

Ich möchte die ValidatingCarrier in aufsteigender Reihenfolge sortieren, also dachte ich darüber nach, es in eine Liste zu bekommen und es mit Orderby in meinem Controller zu sortieren.Zugriff auf ein Modell über Liste in MVC

Ich habe folgende Modellklassen:

public class sort 
    { 
     public OTAAirLowFareSearchRS OTA_AirLowFareSearchRS { get; set; } 
    } 
public class OTAAirLowFareSearchRS 
    { 
     public int PricedItinCount { get; set; } 
     public int BrandedOneWayItinCount { get; set; } 
     public int SimpleOneWayItinCount { get; set; } 
     public int DepartedItinCount { get; set; } 
     public int SoldOutItinCount { get; set; } 
     public int AvailableItinCount { get; set; } 
     public string Version { get; set; } 
     public Success success { get; set; } 
     public Warnings Warnings { get; set; } 
     public PricedItineraries PricedItineraries { get; set; } 
     public TPAExtensions8 TPA_Extensions { get; set; } 
    } 

public class PricedItinerary 
    { 
     public int SequenceNumber { get; set; } 
     public AirItinerary AirItinerary { get; set; } 
     public List<AirItineraryPricingInfo> AirItineraryPricingInfo { get; set; } 
     public TicketingInfo TicketingInfo { get; set; } 
     public TPAExtensions7 TPA_Extensions { get; set; } 
    } 

public class AirItineraryPricingInfo 
    { 
     public string PricingSource { get; set; } 
     public string PricingSubSource { get; set; } 
     public ItinTotalFare ItinTotalFare { get; set; } 
     public PTCFareBreakdowns PTC_FareBreakdowns { get; set; } 
     public FareInfos2 FareInfos { get; set; } 
     public TPAExtensions6 TPA_Extensions { get; set; } 
     public string LastTicketDate { get; set; } 
    } 
public class TPAExtensions6 
    { 
     public DivideInParty DivideInParty { get; set; } 
     public ValidatingCarrier ValidatingCarrier { get; set; } 
    } 

Das Folgende ist die Art, wie ich es in meinem Controller zuzugreifen versuchen. Ich kann nicht über PriceItinerary hinaus zugreifen, weil das Zurücksetzen als eine Liste geht.

sort searchResponse = JsonConvert.DeserializeObject<sort>(tar.ToString()); 
var sortingname = searchResponse.OTA_AirLowFareSearchRS.PricedItineraries.PricedItinerary; 
List<PricedItinerary> lstname = new List<PricedItinerary>(); 

Jede Art von Hilfe ist willkommen ....

Antwort

0

Sie erstellen haben das Objekt zuerst

searchResponse.OTA_AirLowFareSearchRS.PricedItineraries.PricedItinerary obj = new searchResponse.OTA_AirLowFareSearchRS.PricedItineraries.PricedItinerary; 

var x = obj.SequenceNumber;

+0

Sortierung searchResponse = JsonConvert.DeserializeObject (tar.ToString()); Ich habe ein Objekt bereits als Suchantwort und es ist eine lokale Variable .. Objekt kann nicht erstellt werden, wie Sie sagen. – kirushan

+0

Ich habe die Frage bearbeitet Ich hoffe, es würde Ihnen helfen – kirushan

0

Sie können es mit LINQ SelectMany macht eine Projektion os IEnumerable in eine IEnumerable. Mit dem gegebenen Modell und unter der Annahme, dass Sie eine Liste von ValidatingCarrier ab PricedItinerary bekommen müssen, gehen wir es zu tun!

IEnumerable<ValidatingCarrier> IEValidatingCarrier = searchResponse.OTA_AirLowFareSearchRS.PricedItineraries.PricedItinerary 
     .SelectMany(p => p.AirItineraryPricingInfo.SelectMany(a => a.TPA_Extensions.ValidatingCarrier)); //This would give you an IEnumerable<ValidatingCarrier> 
    IEnumerable<ValidatingCarrier> LstValidatingCarrier = IEValidatingCarrier.OrderBy(o => o.OrderBySomething).ToList(); //And finally, your ordered list! 

Sie können es auch tun, alles auf einmal, so etwas wie:

searchResponse.OTA_AirLowFareSearchRS.PricedItineraries.PricedItinerary 
    .SelectMany(p => p.AirItineraryPricingInfo.SelectMany(a => a.TPA_Extensions.ValidatingCarrier)) 
    .OrderBy(o => o.OrderBySomething).ToList(); 

Hoffe, es hilft! Wenn ich deine Frage nicht gut verstehe, lass es mich wissen!

+0

Ich kann nicht auf AirItineraryPricingInfo zugreifen, weil es eine Liste in PricedItinerary ist ... Dies ist das Hauptproblem, bitte helfen Sie mir dabei ... – kirushan

0

Versuchen Sie, auf "AirItineraryPricingInfo" mit der Instanz "PricedItinerary" zuzugreifen? Wenn es so ist, hilft das, ansonsten bitte ignorieren.

In Controller, wenn wir Instanz für "PricedItinerary" erstellen, können wir auf geerbte Klasse zugreifen.

Verwandte Themen