-1
votes

Obtenez le nom de l'identifiant de JSON en utilisant LINQ

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)


1 commentaires

Qu'est-ce que tu as essayé jusque-là?


5 Réponses :


0
votes
jsonLinq["appointments"].AsEnumerable().Where(s => Convert.ToString(s["patient_id"]).Equals(2)).Select(p => p["patient_name"]).FirstOrDefault().ToString();
Got the answer!!!

0 commentaires

0
votes

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"]);


0 commentaires

0
votes

Vous pouvez utiliser

var name = jsonLinq.SelectToken($"$.appointments[?(@.patient_id == '{idToSearch}')].patient_name")
                   .Value<string>();


0 commentaires

0
votes

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> xxx pré>

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


0 commentaires

0
votes

Si votre JSON est non dynamique, vous pouvez également créer des classes de modèle qui représentent vos données JSON: xxx

puis vous pouvez désérialiser et récupérer les noms patient avec où () et SELECT () : xxx

ou vous pouvez simplement récupérer le premier trouvé avec sReveArdefault () : xxx


0 commentaires