2011-09-09 52 views
1

我試圖解析如下所示的JSON文件,並獲得與特定名稱的地點的座標:JSON和LINQ查詢

{"Theaters":[{"TheaterName":"Name1","GPSLocation":"3.888689,35.519845"},{"TheaterName":"Name2","GPSLocation":"33.867444,3.527002"},{"TheaterName":"Name3","GPSLocation":"33.897403,3.563645"},{"TheaterName":"Name4","GPSLocation":"34.438693, 3.831660"},{"TheaterName":"Name5","GPSLocation":"3.88392,35.48333"},{"TheaterName":"Name6","GPSLocation":"33.88424,35.483145"},{"TheaterName":"Name7","GPSLocation":"33.972802, 3.610099"},{"TheaterName":"Name8","GPSLocation":"33.857193,35.526886"}, 
{"TheaterName":"Name9","GPSLocation":"3.36394,35.735929"},{"TheaterName":"Name10","GPSLocation":"3.897403,35.563645"},{"TheaterName":"Name11","GPSLocation":"33.886605,3.508580"},{"TheaterName":"Name12","GPSLocation":"33.892134,3.517423"}, 
{"TheaterName":"Name13","GPSLocation":"3.917253,35.589074"},{"TheaterName":"Name14","GPSLocation":"33.2860,35.6115"}]} 

查詢我使用如下所示,但是響應該表達式無法評估。問題是什麼??謝謝

var coordinates = from p in JSON["Theaters"].Children() 
            where p["TheaterName"].Value<string>() == Name1 
            select p["GPSLocation"].Values(); 

回答

3

你不想要以下嗎?

var coordinates = from p in JSON["Theaters"].Children() 
    where p["TheaterName"].Value<string>() == Name1 
    select p["GPSLocation"].Value<string>(); 

畢竟,你的GPSLocation是一個逗號分隔的列表。

0

您是否確定了此回覆?在Visual Studio調試器?如果是這樣,你會看到LINQ查詢的執行失敗。他們得到執行第一次訪問或您打電話的擴展方法ToList(),ToArray()等

+0

對不起,但我沒有得到你的意思,你能解釋一下嗎。 – Ameen

+0

如果您在調試過程中將其他變量/屬性或其他東西懸停在Visual Studio中,則經常會看到消息「表達式無法評估」 - 主要是因爲LINQ表達式的懶惰執行特性(它們會在第一次訪問時執行)。 我只想確定你的意思是這個還是別的。 –

+0

不,你是對的。我正在調試模式下檢查它,並且如您所說,我收到以下答覆。 – Ameen