2011-11-16 15 views
0

SpaceType、TimeIntervalおよびPriceでオブジェクトをソートしようとしています。これは、以下に示すようにネストされたオブジェクトです。コスト> - - >時間間隔C#を使用してネストされたオブジェクトから値をソート

"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 
    } 
]] 
} 

答えて

2

だから、あなたがLINQを使用することができますC#での構造でそれを持っていると仮定すると、誰かが私に#4.0

ParkingFacility cを使用して効率的な方法でそれを並べ替える方法についてのサンプルを提案することができます複数の商品で注文する

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

これは当然の簡単な例ですが、あなたがそれらをソートしたかった方法に応じ - 自分のコンテナ内または1つとして、すべての場合 - あなたはこのイテレータを実行することができます。それは非常に効率的です - あなたよりも優れたプログラマーと私はそうしました。

おそらく難しいのは、spaceTypeをソートする方法です。アルファベット順に並べ替えると、あなたの望むものと異なる場合があります。

+0

問題はソート順ではなく、時間間隔と呼ばれるネストされたオブジェクトに基づいてパーキングファシリティオブジェクトであるルート構造をソートする方法です。 ParkingFacilityには原価対象が含まれています。原価対象には、価格対象の一覧であるFaciltyPriceオブジェクトが含まれています。リストのリストから、私は旅行時間を得ることができますが、旅行時間で駐車施設を並べ替えることは、どのように手がかりがないのかです。投稿されたオブジェクトを参照してください。これは私の現在のオブジェクトの正確なjson表現です。私はこれを並べ替える必要があります – Pawan

+0

あなたが並べ替えたい要素だけでコード内に切り抜きモデルを追加することは可能ですか?見る。私はまだどのオブジェクトをソートしたいのか、どのソート条件をソートしたいのかは100%ではありません。トーを助けてくれる以上! –

+0

rangitatanz:助けてくれてありがとう。私はそれを考え出した。私が最初に使った論理は正しくありませんでした。 – Pawan