Search code examples
sharepointsharepoint-2010web-parts

How do I tell if an SPListItem is a document or a folder


I have a loop that is looping through a document library like in the example below.

foreach (SPListItem item in DocumentLibrary)
{
}

How do I tell if the SPListItem is a document or a folder?


Solution

  • The Folder property of the list item will be null if the item is not a folder, so you can write:

    public bool IsFolder(SPListItem item)
    {
        return item.Folder != null;
    }
    

    In the same way, the File property of the item will be null if the item is not a document. However, the documentation advises against using this property in that case:

    The File property also returns null if the item is a folder, or if the item is not located in a document library, although it is not recommended that you call this property in these cases.

    An alternate way is to check the BaseType property of the list:

    public bool IsDocument(SPListItem item)
    {
        return !IsFolder(item)
            && item.ParentList.BaseType == SPBaseType.DocumentLibrary;
    }