c# - 从嵌套数组中查找父 ID
问题描述
我有以下 JSON。我想查询以查找其部门获得learnerId: "123"
. 我在 stackoverflow C# Linq 中提出了类似的查询,在嵌套数组对象中查找特定项目并得到了回复,但需要找到根 id。
这是我的查询,它只获取sectorid
,但我需要获取雇主 ID(即根 ID。)预期输出是“id”:“1000000000000”
var sectorId = employers
.SelectMany(e => e.Sectors)
.SingleOrDefault(sector =>
sector.Learners.Any(learner => learner.LearnerId == learnerEntity.Id)
)?.Id;
我的 JSON 是:
[
{
"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"
}
]
解决方案
您可以使用嵌套Any
语句执行此操作:
var employer = employers
.SingleOrDefault(e => e.Sectors
.Any(s => s.Learners
.Any(l => l.LearnerId == 123)));
// Check for null just in case we didn't find a match
if(employer != null)
{
var employerId = employer.Id;
}
请注意,如果多个雇主匹配,这将引发异常。
推荐阅读
- python - 如何设置django项目可以从多个url进入admin管理登录页面
- jquery - 使用 php 将 iframe(谷歌地图)添加到 jquery
- angular - 'HttpErrorResponse' 类型的参数不可分配给类型参数
- python - 如何过滤 pyspark 数据框中的日期
- r - 在 R 数据框中创建一个新类
- python - 如何获取存储在列表中的实例的值
- docker - 一起使用 Nginx 和 Ocelot Api
- python - Django 向外部数据库模型添加新字段
- cypress - 如何使用 cypress 捕获和显示文本以自动出现和消失弹出窗口
- flutter - Flutter中不同页面上的同步状态