How do I tell if an SPListItem is a document or a folder
if( item["ContentType"].ToString() == "Folder")
Use SPFileSystemObjectType enumeration. Here's a sample...
foreach (SPListItem item in docLib.Items)
{
if (item.FileSystemObjectType == SPFileSystemObjectType.Folder)
{
// item is a folder
...
}
else if (item.FileSystemObjectType == SPFileSystemObjectType.File)
{
// item is a file
...
}
}
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 returnsnull
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;
}