2017-09-25 7 views
-2

JSONファイルから特定の国名の国名を抽出しようとしています。ここに私のJSONファイルは次のとおりです。ここでLINQクエリがnullを返す、JSONファイルからオブジェクト属性値を抽出する

[ 
{ 
    "country": "Iceland", 
    "abbr": "IS" 
}, 
{ 
    "country": "Kosovo", 
    "abbr": "KS" 
}, 
{ 
    "country": "Belgium", 
    "abbr": "BE" 
    },... 
] 

は、国のモデルである:

public class Country 
{ 
    public string country { get; set; } 
    public string abbr { get; set; } 
} 

私は与えられた略語を抽出し、これを変数略語のためにnullを返すために、次のLINQクエリを使用しています:

var abbreviation = from n in countries 
        where n.country.Equals(selectedCountry) 
        select n.abbr; 

私はcoutries(LINQクエリの最初の行、私はデバッガを使用してチェック)のリストを取得することができ、私は "アイスランド"と等しいselectectedCountryを持っています。だから私は問題がLINQクエリの最後の2行から来ている疑いがある、私は本当にLINQクエリに精通していないので、これが合法であるかわからない。私は1つの単一のデータテーブルでも操作しているので、特定のタイプのクエリを使用する必要があるかどうかはわかりません。

+1

selectedCountryの値は何ですか?スペースが含まれていないことを確認し、大文字と小文字を区別する必要があります。 –

+0

これは、JSONをどのように解析するかにかかっています。 – nbokmans

+0

選択した国の値が「アイスランド」です。これはJSONファイル – Mouna

答えて

0

私がデバッグしていた場合は、クエリの前後にブレークポイントを設定して、そのデータがどのようなものかを確認します。

var abbreviation = (from n in countries 
        where n.country 
        .Equals(selectedCountry, StringComparison.InvariantCultureIgnoreCase) // ignore case 
        select n.abbr).FirstOrDefault(); // no duplicates expected 

これはテストされていませんが動作するはずです。

+0

私のために働いてくれてありがとう! (()n.iso.Equals(略称、StringComparison.InvariantCultureIgnoreCase)がn個を選択 空港 中のnからIEnumerableを EuropeanAirports = IEnumerableを .FirstOrDefault:今、私は別のLINQのクエリを実行しようとしていますが、この1はIEnumerableをを返す必要があります());キャストが機能しないLINQクエリでIENUMERABLEを返す方法を知っていますか? – Mouna

+0

FirstOrDefault()は、空港タイプのオブジェクトを返します。 IEnumerableを返すには、そのままにしておきます。 –

+0

@Mounaあなたが実際に呼び出しているコードのドキュメントを読むのに、より多くの時間を費やす必要があります。 – Trioj

関連する問題