dynamic
オブジェクトをIEnumerable
Type に変換して、プロパティでコレクションをフィルタリングする方法はありますか。
dynamic data = JsonConvert.DeserializeObject(response.Content);
このようなものにアクセスする必要があります
var a = data.Where(p => p.verified == true)
何か案は?
data
が何らかの種類である限りIEnumerable
、次を使用できます。
var a = ((IEnumerable) data).Cast<dynamic>()
.Where(p => p.verified);
は、ラムダ式へのパラメーターの型も になるように になりCast<dynamic>()
ます。IEnumerable<dynamic>
dynamic
キャストしてみるIEnumerable<dynamic>
((IEnumerable<dynamic>)data).Where(d => d.Id == 1);
このアプローチは、他のアプローチよりも 4 倍高速です。
幸運を
これが役立つ場合があります。jsonString を response.Content に置き換え、応答の内容に基づいて必要に応じてネストされたループを使用します。
以下のコードでは、JValue.Parse は IEnumerable である JToken を返します。
string jsonString = "[{\"Question\":{\"QuestionId\":49,\"QuestionText\":\"Whats your name?\",\"Answer\":\"xyz\"}},{\"Question\":{\"QuestionId\":51,\"QuestionText\":\"Are you smart?\",\"Answer\":\"Yes\"}}]";
dynamic myObject = JValue.Parse(jsonString);
foreach (dynamic questions in myObject)
{
Console.WriteLine(questions.Question.QuestionId + "." + questions.Question.QuestionText.ToString());
Console.WriteLine("Ans. " +questions.Question.Answer);
Console.WriteLine();
}
Console.Read();