public void Execute(List <Entity> entities) { var toDeleteWithChildren = entities .Concat(entities .Where(x => x.hasId) .SelectMany(x => _pool.FindChildrenFor(x))) .Distinct() .ToList(); foreach (var entity in toDeleteWithChildren) { if (entity.hasView) { DestroyView(entity); } _pool.DestroyEntity(entity); } }