2016-05-30 35 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”创建实例,则可以访问继承类。