在没有foreach的情况下迭代JObject

问题描述

这段代码运行良好我正在使用foreach循环迭代JObject

HttpResponseMessage response = await clientHelper.PostAsJsonRequest("home/LoadPatientDetailData/2232565",new { });

        if (response.IsSuccessStatusCode)
        {
            string s = await response.Content.ReadAsStringAsync();
            var x = JsonConvert.DeserializeObject(s);
            JObject y = JsonConvert.DeserializeObject<JObject>(x.ToString());
            int i = 0;
            foreach (KeyValuePair<string,JToken> xs in y)
            {
                if(i == 0)
                {
                    //data.outstandingTasks = xs.Value.ElementAt(0).ElementAt(0).ToObject<List<OutstandingTask>>();
                }
                else if (i == 1)
                {
                    data.outstandingPrompts = xs.Value.ElementAt(0).ElementAt(0).ToObject<List<OutstandingPrompts>>();
                }
                else if (i == 2)
                {
                    data.outstandingRecalls = xs.Value.ElementAt(0).ElementAt(0).ToObject<List<OutstandingRecalls>>();
                }
                else if (i == 3)
                {
                    //data.diagnosis = xs.Value.ElementAt(0).ElementAt(0).ToObject<List<Diagnosis>>();
                }
                else if (i == 4)
                {
                    data.measurments = xs.Value.ElementAt(0).ElementAt(0).ToObject<List<Measurments>>();
                }
                i++;
            }
            PatientDetailData xx = JsonConvert.DeserializeObject<PatientDetailData>(x.ToString());

        }

有一种方法可以在不使用foreach的情况下进行迭代,我尝试了几种方法,但它们没有用。例如

KeyValuePair<string,JToken> q = y.First;
KeyValuePair<string,JToken> w = y[0];
KeyValuePair<string,JToken> h = (KeyValuePair<string,JToken>)y[0];
KeyValuePair<string,JToken> hs = y[0] as KeyValuePair<string,JToken>;
KeyValuePair<string,JToken> e = y["key"];
KeyValuePair<string,JToken> r= y.Value;

但是他们都不起作用

解决方法

您到底想做什么?将其强制转换为<Key,Value>对后,您可能会使用某些LINQ查询

var y = xs.Where(d => d.Key == "some_key").Select(v => ((JValue) v.Value).Value);

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...