Sharepoint 为什么可以';即使SPList.ItemCount为>;0?

Sharepoint 为什么可以';即使SPList.ItemCount为>;0?,sharepoint,sharepoint-2007,Sharepoint,Sharepoint 2007,我在两个不同的SharePoint安装上运行了相同的代码,用于迭代列表中的项目并显示数据。针对第一次SharePoint安装 SPList.ItemCount==SPList.Items.Count==4 在第二次SharePoint安装中,SPList.ItemCount==4,而SPList.Items.Count==0,并且foreach循环在列表项中迭代无效(因为没有任何项)。(不用说,两个SP安装上的列表具有相同的项) 我使用的代码可以总结如下: 什么会导致SPList.Items

我在两个不同的SharePoint安装上运行了相同的代码,用于迭代列表中的项目并显示数据。针对第一次SharePoint安装

SPList.ItemCount==SPList.Items.Count==4

在第二次SharePoint安装中,SPList.ItemCount==4,而SPList.Items.Count==0,并且foreach循环在列表项中迭代无效(因为没有任何项)。(不用说,两个SP安装上的列表具有相同的项)

我使用的代码可以总结如下:

什么会导致SPList.Items.Count和SPList.Items.Count不同?更重要的是,为什么我不能迭代列表中的项目,即使SPList.ItemCount>0


此问题的副本出现在上,但没有完全解释解决方案。

ItemCount属性的值包括文档库中的文件夹以及子文件夹中的文件。SPListCollection类的Count属性的值不包括文件夹


我的理论是它与文件夹有关,我知道你说过它们是相同的安装。你确定是这样吗。您是否已通过UI或其他方式实际检查了文件列表?

项目级权限可能会阻止
列表。项目
不会将每个项目暴露在所考虑的用户上下文中,因此也不会对属性进行计数。

是的,我有。这些项目位于列表中,可通过allitems.aspx访问。没有文件夹,只有项目。在这种情况下,不是项目级权限,而是列表权限本身-我以为我启用了对列表的匿名访问,但事实证明我没有。你的回答给了我正确的方向,谢谢!奇怪的是Count和ItemCount属性返回不同的值。很高兴能提供帮助!如果遇到性能问题,我最近学到的一件事是
SPList.Items.GetItemById()
SPList.GetItemById()
慢得多。原因是调用
SPList
上的
Items
属性会立即获取列表中的所有项目,在某些情况下,您不需要这些项目。
SPList list = web.Lists["list"];
SPListItemCollection itemCollection = list.Items;

Console.WriteLine("list.ItemCount: {0}", list.ItemCount); //prints "list.ItemCount: 4"
Console.WriteLine("list.Items.Count: {0}", list.Items.Count); //prints "list.Items.Count: 0"

foreach (SPListItem item in itemCollection)
{
    //nothing executed here, since itemCollection is empty,
    //even though list.ItemCount is 4.
}