Press Ctrl / CMD + C to copy this to your clipboard.
This post will be reported to the moderators as potential spam to be looked at
I'm trying to get all the child folders of a media folder in Umbraco 8.
I'm using the MediaService to get a root media item (folder) like this:
var challengesRootFolder = ms.GetRootMedia().FirstOrDefault(x => x.Name.InvariantEquals("Challenges"));
Now I can use the MediaService to check if the IMedia item has children using the .HasChildren() method.
Is there any way to get all the child folders as IEnumerable<IMedia> from the challengesRootFolder in the code snippet?
you can get the child items through
ms.GetPagedChildren(item.Id, 0, 100, out long total);
this would get the first 100 items (nothing but performance stopping you upping the pageSize variable)
a more comprehensive way to get everything
const int pageSize = 500;
var page = 0;
var total = long.MaxValue;
while(page * pageSize < total)
var children = ms.GetPagedChildren(item.Id, page++, pageSize, out total);
// do stuff wit the child items
Also GetPagedDescendants will get all items down the tree.
Just getting folders is a little more complex, but you can see how Umbraco does it in the source for the media controller
Thanks this worked!
I managed to get only folders by simply adding a Where to check the ContentType.Alias in the while loop.
children.AddRange(ms.GetPagedChildren(challengesRootFolder.Id, page++, pageSize, out total)
.Where(x => x.ContentType.Alias == Constants.Conventions.MediaTypes.Folder));
Thread is quite old but I think that anyone should know that your last answer contains common pitfall which can be replicated.
GetPagedDescendanst returns IEnumerable not IQuerable so it is huge difference in performance.
You should use proper IQuery filter as parameter to this method instead.
is working on a reply...
Write your reply to:
Image will be uploaded when post is submitted