如何通过MVC中的List访问模型

时间:2016-05-30 07:16:00

标签: c# asp.net .net asp.net-mvc asp.net-mvc-4

我想按升序对ValidatingCarrier进行排序,所以我想把它放到一个List中,然后在我的控制器中使用Orderby对它进行排序。

我有以下模型类:

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>();

赞赏任何形式的帮助......

3 个答案:

答案 0 :(得分:0)

您已先创建对象

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

var x = obj.SequenceNumber;

答案 1 :(得分:0)

您可以使用LINQ SelectManyIEnumerable投影到一个IEnumerable。 使用给定的模型并假设您需要从ValidatingCarrier开始获取PricedItinerary列表,让我们去做吧!

    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();

希望它有所帮助!如果我不太了解你的问题,请告诉我!

答案 2 :(得分:0)

您是否正在尝试访问&#34; AirItineraryPricingInfo&#34;使用&#34; PricedItinerary&#34;的实例?如果是这样,那么这会有所帮助,否则请忽略。

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

在控制器中,如果我们为&#34; PricedItinerary&#34;创建实例,我们可以访问继承的类。