У меня есть эта структура:
OptionGroup (self-referencing)
=> OptionGroupMap
=> Option (List)
=> OptionCode (List)
=> Attribute (List)
=>AttributeListItem (List)
Я загружаю эту структуру с помощью Include и ThenInclude следующим образом:
IQueryable<OptionGroup> query = _context.OptionGroups.Where(og => og.ParentId == null)
.Include(og => og.OptionGroups_ParentId)
.ThenInclude(og => og.OptionGroupMaps)
.ThenInclude(ogm => ogm.Option)
.ThenInclude(o => o.OptionCodes)
.ThenInclude(ogm => ogm.Option)
.ThenInclude(o => o.Attributes)
.ThenInclude(a => a.AttributeListItems);
Это для API. Вот пример JSON результата запроса:
"optionGroups": [
{
"id": 2,
"parentId": null,
"name": "Preconstruction Options",
"childOptionGroups": [
{
"id": 1,
"parentId": 2,
"name": "Lot Options",
"childOptionGroups": [],
"options": [
{
"id": 32,
"description": "Lot",
"parentId": null,
"optionCodes": [
{
"id": 8373,
"code": "FNC01",
"description": "Additional Standard Fence",
"optionId": 32
},
{
"id": 8374,
"code": "FNC02",
"description": "Additional Capped Upgrade",
"optionId": 32
},
{
"id": 8375,
"code": "FNC03",
"description": "Additional Fence Gate",
"optionId": 32
}
],
"attributes": []
}
]
}
]
}
]
Допустим, я не хочу возвращать OptionCode, где код «FNC03», потому что это недопустимый OptionCode для этого лота. Я хотел бы сделать что-то вроде:
var result = query.ToList();
result.Remove(oc => oc.Code == "FNC03");
Но удаление не будет работать с OptionCode, потому что root структуры является OptionGroup.
Как мне получить избавиться от OptionCode от результата, где код "FNC03"?