J'ai JSON comme suit
var jsonLinq = JObject.Parse(ResponseContent); jsonLinq["appointments"].AsEnumerable().Select(p => p["patient_name"]).Where(s => Convert.ToString(s["patient_id"]).Equals(2)
5 Réponses :
jsonLinq["appointments"].AsEnumerable().Where(s => Convert.ToString(s["patient_id"]).Equals(2)).Select(p => p["patient_name"]).FirstOrDefault().ToString(); Got the answer!!!
Démarrer avec où code>, puis
Sélectionnez CODE>
var results = jsonLinq["appointments"]
.Where(s => s["patient_id"].ToString() == "1")
.Select(p => p["patient_name"]);
Vous pouvez utiliser
var name = jsonLinq.SelectToken($"$.appointments[?(@.patient_id == '{idToSearch}')].patient_name") .Value<string>();
L'ordre de Sélectionnez code> et
où code> est important ici. Vous devez filtrer les entrées complètes "patient" avec
où code> d'abord, avant d'extraire la propriété "PATIAL_NAME" avec
SELECT CODE>. Dès que vous exécutez la fonction de mappage code> code>, votre
ienumerable code> ne contiendra que ce que vous avez sélectionné, pas l'élément que vous avez sélectionné à partir de.
Sélectionnez avant
où code> (ne fonctionne pas): p>
où code> avant
SELECT code> > (Travaux): P>
var jsonLinq = JObject.Parse(ResponseContent);
// whole JObject
jsonLinq["appointments"]
// "appointments" object
.AsEnumerable()
// "appointments" as list of KeyValuePair<string, JToken>
.Where(s => Convert.ToString(s["patient_id"]).Equals(2))
// filtered list of all patient objects where "patient_id" is "2"
.Select(p => p["patient_name"])
// list of all "patient_names" from the previously filtered list
Si votre JSON est non dynamique, vous pouvez également créer des classes de modèle qui représentent vos données JSON: puis vous pouvez désérialiser et récupérer les noms patient avec ou vous pouvez simplement récupérer le premier trouvé avec où () code> et
SELECT () code>: p>
sReveArdefault () Code>: p>
Qu'est-ce que tu as essayé jusque-là?