Сортировать значение из вложенного объекта с помощью c # - PullRequest
0 голосов
/ 16 ноября 2011

Я пытаюсь отсортировать объект по SpaceType, TimeInterval и Price.Это вложенный объект, как показано ниже.Может кто-нибудь предложить мне пример того, как эффективно сортировать его, используя c # 4.0

ParkingFacility -> Стоимость -> TimeInterval

"VendorID": 1200,
"FacilityID": 931,
"ParkingType": "Garage",
"Price": null,
"BARTValidationRequired": null,
"LotName": "Civic Center Garage",
"City": "San Francisco",
"Street": "355 McAllister Street",
"Neighborhood": "Hayes Valley/Civic Center",
"Latitude": "37.780200",
"Longitude": "-122.417800",
"Distance": "",
"Availability": "Space Available: <b>62%</b> (515/843) <br/>Current Price: <b>N/A</b><br />6:00 AM-12:00 AM",
"Details": null,
"Hours": "Sunday : 9:00 AM-10:00 PM <br />Monday : 6:00 AM-12:00 AM <br />Tuesday : 6:00 AM-12:00 AM <br />Wednesday : 6:00 AM-12:00 AM <br />Thursday : 6:00 AM-12:00 AM <br />Friday : 6:00 AM-12:00 AM <br />Saturday : 8:00 AM-12:00 AM <br />",
"Entrance": null,
"Contact": "",
"TodayTimings": "6:00 AM-12:00 AM",
"TotalParkingSpace": 843,
"AvailableParkingSpace": 515,
"OccupiedParkingSpace": 328,
"PercentFull": 38,
"Rendering": 3,
"ZoneID": 0,
"OwnershipAgencyType": null,
"Cost": [
[
    {
        "DayType": "Thursday",
        "SpaceType": "Motorcycle",
        "Description": "Motorcycle: Flatrate",
        "TimeInterval": 0,
        "Cost": "$5.00",
        "FaciltyID": 0
    },
    {
        "DayType": "Thursday",
        "SpaceType": "Auto",
        "Description": null,
        "TimeInterval": 0,
        "Cost": "$5.00",
        "FaciltyID": 0
    }
],
[
    {
        "DayType": "MondayToFridayExceptHolidays",
        "SpaceType": "Auto",
        "Description": "Early Bird: Flat rate. Mon-Fri (excl. Tue): In by 9AM/Out by 7PM;No Tues Early Bird",
        "TimeInterval": 0,
        "Cost": "$15.00",
        "FaciltyID": 0
    }
],
[
    {
        "DayType": "Thursday",
        "SpaceType": "Auto",
        "Description": "Per hour",
        "TimeInterval": 60,
        "Cost": "$3.00",
        "FaciltyID": 0
    },
    {
        "DayType": "Thursday",
        "SpaceType": "Auto",
        "Description": "12-Hour Max",
        "TimeInterval": 720,
        "Cost": "$24.00",
        "FaciltyID": 0
    },
    {
        "DayType": "Thursday",
        "SpaceType": "Auto",
        "Description": "24-Hour Max/Lost Tkt",
        "TimeInterval": 0,
        "Cost": "$30.00",
        "FaciltyID": 0
    },
    {
        "DayType": "Thursday",
        "SpaceType": "Auto",
        "Description": null,
        "TimeInterval": 0,
        "Cost": "$30.00",
        "FaciltyID": 0
     }
 ]]
}

1 Ответ

2 голосов
/ 16 ноября 2011

Итак, если у вас есть это в структуре в c #, вы можете использовать linq для упорядочения по нескольким элементам.

, например

 listOfPeople.OrderBy(person => person.LastName)
        .ThenBy(person => person.FirstName)
         .ThenBy(person => person.DOB)

Это, конечно, тривиальный пример, но в зависимости от того, как вы хотите, чтобы они были отсортированы - если они находятся внутри собственного контейнера или все как один - вы можете запустить этот итератор. Это довольно эффективно - лучше программистов, чем вы, и я сделал это так.

Возможно, сложнее то, как отсортировать spaceType - так же, как если бы вы делали это так, это делало бы в алфавитном порядке, что может не соответствовать вашим ожиданиям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...