SPList.Items возвращает только непапличные элементы. Вы можете использовать SPList.Folders для перебора всех папок в списке. Так что, если вы сделали тот же цикл foreach, только используя:
foreach (SPListItem objSourceFolderItem in objSourceList.Folders)
Затем вы получите все папки. Чтобы правильно переместить папку и все ее содержимое, вы должны использовать objSourceFolderItem.Folder.CopyTo(ItemUrl)
.
Я попробовал это, используя список только с одним уровнем папок (соедините его с циклом foreach, чтобы получить все элементы в корневой папке), и он работал для меня в SP2007. Я полагаю, что SPList.Folders получает все папки во всем списке, а не только те, которые находятся в корневой папке, так что если вы в конечном итоге разбиваете список с помощью многоуровневой системы папок, то альтернативой может быть попытка: *
foreach (SPFolder objSourceFolderItem in objSourceList.RootFolder.SubFolders)
Поскольку это уже объекты SPFolder, вы можете просто использовать objSourceFolderItem.CopyTo(ItemUrl)
.