2011-09-09 7 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式の怠惰なexecutonの性質(最初のアクセス時に実行されます) 私はあなたがこれを何か他のものかどうかを確かめたいだけです。 –

+0

いいえ、あなたは正しいです。私はそれをデバッグモードでチェックしています。 – Ameen