I have the following JSON. I would like to query to find the employer id whose sector has got the learnerId: "123". I raised similar query in stackoverflow C# Linq find particular item in nested array object and got a reply but need to find the root id.
This is my query which only gets only the sectorid, but I need to get the employer id (ie. the root id.) The expected output is "id": "1000000000000"
var sectorId = employers
.SelectMany(e => e.Sectors)
.SingleOrDefault(sector =>
sector.Learners.Any(learner => learner.LearnerId == learnerEntity.Id)
)?.Id;
My JSON is:
[
{
"name": "Emp1",
"edsNumber": "",
"sectors": [
{
"id": "7d65fa4c-86ed-4e07-9e9a-a1583df5715c",
"name": "Technology1",
"learners": [
{
"learnerId": "123",
"learnerName": "Learner1",
"dateAdded": 1612872051
},
{
"learnerId": "456",
"learnerName": "Learner2",
"dateAdded": 1612877369
},
{
"learnerId": "789",
"learnerName": "Learner3",
"dateAdded": 1612877372
},
{
"learnerId": "12314",
"learnerName": "Learner4",
"dateAdded": 1613065233
},
{
"learnerId": "2346",
"learnerName": "Learner5",
"dateAdded": 1613577350
}
],
"course": {
"name": "Angularv10",
"isCompleted": true
},
"contact": {
"name": "Voytek",
"jobTitle": "Designer1",
"email": "rana@gmail.com",
"isCompleted": true
}
}
],
"id": "1000000000000"
},
{
"name": "Emp2",
"edsNumber": "",
"sectors": [
{
"id": "7d65fa4c-86ed-4e07-9e9a-a1583df5235c",
"name": "Technology1",
"learners": [
{
"learnerId": "834457",
"learnerName": "Learner6",
"dateAdded": 1612872051
},
{
"learnerId": "11122",
"learnerName": "Learner7",
"dateAdded": 1612877369
}
],
"course": {
"name": "Angularv10",
"isCompleted": true
},
"contact": {
"name": "Voytek",
"jobTitle": "Designer1",
"email": "rana@gmail.com",
"isCompleted": true
}
}
],
"id": "2000000000000"
}
]