2016-05-30 17 views
1

我想按升序對ValidatingCarrier進行排序,所以我想將它放入列表中並使用Orderby在我的控制器中進行排序。如何通過MVC中的列表訪問模型

我有以下的模型類:

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; } 
    } 

以下是我試圖訪問它在我的控制器的方式。我無法訪問超出PriceItinerary導致重置爲列表。

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

任何形式的幫助表示讚賞....

回答

0

你必須創建對象的第一

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

變種X = obj.SequenceNumber;

+0

sort searchResponse = JsonConvert.DeserializeObject (tar.ToString()); 我有一個對象已經被稱爲搜索響應和它的本地變量..對象不能像你說的那樣創建。 – kirushan

+0

我編輯了這個問題,我希望它能幫到你 – kirushan

0

你可以用LINQ SelectMany做投影os IEnumerable合成一個IEnumerable。 使用給定的模型並假設您需要從PricedItinerary開始獲得ValidatingCarrier的列表,讓我們開始吧!

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! 

你也可以做到這一切在一次,這樣的事情:

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

希望它能幫助!如果我不明白你的問題,請讓我知道!

+0

我無法訪問AirItineraryPricingInfo因爲它是PricedItinerary裏面的一個列表...這是主要的問題,請你幫我解決這個問題... – kirushan

0

您是否試圖使用「PricedItinerary」實例訪問「AirItineraryPricingInfo」?如果是這樣,那麼這有幫助,否則請忽略。

public class PricedItinerary : AirItineraryPricingInfo 
{ 
    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; } 
} 

在控制器中,如果我們爲「PricedItinerary」創建實例,則可以訪問繼承類。

相關問題