@INTERNALINTERFERENCE

Как достать всех потомков по списку id?

У меня есть таблица с полями: Id, ParentId
Необходимо реализовать множественное редактирование - т.е меняю Id, меняется и все ParentId. Я написал следующий плохой код:
static private IEnumerable<Guid> DeleteDepartmentsWithChildren(
    IEnumerable<Guid> departmentIds,
    DbSet<Department> departmentRepository )
{
var deletedDepartments = new List<Guid>();
foreach ( var i in departmentIds )
            {
                var departmentChildren = departmentRepository.Where( p => p.ParentDepartmentId == i ).ToList();
                foreach ( var child in departmentChildren )
                {
                    var deletedChildrenIds = DeleteDepartmentWithChildren( child.Id, currentOperatorId, departmentRepository );
                    child.MarkDeleted( currentOperatorId );
                    deletedDepartments.AddRange( deletedChildrenIds );
                }
            }
}


Мне не нравится, что я делаю квери на каждом шаге, это неправильно, хотелось бы просто получить всех потомков для всех имеющихся родителей
Вот эти строки можно, наверное, как-то заменить. Например, заюзать join, но я не знаю как
foreach ( var i in departmentIds )
                var departmentChildren = departmentRepository.Where( p => p.ParentDepartmentId == i ).ToList();
  • Вопрос задан
  • 65 просмотров
Пригласить эксперта
Ответы на вопрос 1
@INTERNALINTERFERENCE Автор вопроса
сделал так
var departmentChildren = departmentRepository.Where(
                dr => departmentIds.Contains( dr.ParentDepartmentId ) ).ToList();


но проблема в том, что это долго, поэтому лучше использовать Join
как правильно сделать?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы