В C# Entity Framework Core, как мне изменить списки дочерних объектов, извлеченных с помощью Include и ThenInclude? - PullRequest
0 голосов
/ 22 февраля 2020

У меня есть эта структура:

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"?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...