2017-10-12 13 views
0

JArrayを照会して、条件に基づいて別のJArrayを返信します。今、私が最初にそれを照会することができますLINQを使用して、IEnumerable<JToken>を返すと、このような別のJArrayに変換しますSelectTokensでJSONをクエリする

IEnumerable<JToken> ienmTotalObjects = arrResults.Where(x => x["uResultId"]?.ToString() == arrTaskResults[intResult]["uResultId"].ToString() && x["iElementId"]?.ToString() == strUniqueElementId); 
JArray arrTotalObjects = new JArray(ienmTotalObject); 

私はちょうどJSON.NET SelectTokenshttps://www.newtonsoft.com/json/help/html/SelectToken.htm)について知るようになったし、かなり便利な機能のように思えますIEnumerableに変換することなく照会することができますが、私のケースシナリオでそれを適用する方法を見つけることができません。それが本当に可能かどうか不思議ですか?どんな助けもありがとうございます。質問から

+0

何JSONが見えますか?あなたは一致させるものを示すサンプル[mcve]を提供できますか? – dbc

+0

@dbcこのようなもの:http://jsoneditoronline.org/?id=687dd987fa2bd1e253bbe57599be5a1f – izengod

+0

@BrianRogersこれを参照してください – izengod

答えて

1

私はしかしarrResultsの2 strcuturesとarrTaskResults

var arrResults = JArray.Parse(@"[ 
{ iElementId: 1, ""uResultId"" :""aa"" }, 
{ iElementId: 2, ""uResultId"" :""bb"" } 
]"); 

var arrTaskResults = JArray.Parse(@"[ 
{ ""uResultId"" :""aa"" }, 
{ ""uResultId"" :""bb"" } 
]"); 

を推測することができ、私はintResultstrUniqueElementIdはので、これらは

var intResult = 0; 
var strUniqueElementId = "1"; 

が今ここに我々ができる設定されているが何であるか見当がつかない同じクエリを実行しますが、SelectTokenメソッドを使用してJPathを渡します:

var s = arrTaskResults.SelectToken($"$[{intResult}].uResultId"); 

var selectTokens = arrResults.SelectTokens($"$[?(@.uResultId=='{s}' && @.iElementId=={strUniqueElementId})]"); 
この意志の出力を実行すると

[ 
    { 
    "iElementId": 1, 
    "uResultId": "aa" 
    } 
] 
+0

申し訳ありませんが、私はJPathのことで質問しています。構文とその仕組み) – izengod

+1

これはXPathと非常によく似ていますが(jsonの場合)、これは役立つかもしれません - http://goessner.net/articles/JsonPath/ –

+0

多くの感謝..今後で実践しようと思っています:) – izengod

関連する問題