Здесь важен порядок Select
и Where
. Вам необходимо сначала отфильтровать полные записи «пациент» с помощью Where
, прежде чем извлекать свойство «имя пациента» с помощью Select
. Как только вы запустите функцию отображения Select
, ваш IEnumerable
будет содержать только то, что вы выбрали, а не элемент, из которого вы его выбрали.
Select
до Where
(не работает ):
var jsonLinq = JObject.Parse(ResponseContent);
// whole JObject
jsonLinq["appointments"]
// "appointments" object
.AsEnumerable()
// "appointments" as list of KeyValuePair<string, JToken>
.Select(p => p["patient_name"])
// list of all "patient_name" JTokens
.Where(s => Convert.ToString(s["patient_id"]).Equals(2))
// Error: JTokens "Jairaj Test" and "Test Physician" don't have any "patient_id" property
Where
до Select
(работает):
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