У меня есть таблица с полями: 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();