У меня один и тот же код, работающий на двух разных установках SharePoint, для итерации по элементам в списке и отображения данных. Против первой установки SharePoint,
SPList.ItemCount == SPList.Items.Count == 4
.
Против второй установки SharePoint, SPList.ItemCount == 4, а SPList.Items.Count == 0, и цикл foreach, выполняющий итерацию по элементам Списка, не работает (потому что нет элементов). (Само собой разумеется, списки в обеих установках SP имеют одинаковые элементы).
Код, который я использую, можно обобщить следующим образом:
...
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.
}
...
Что может привести к различию SPList.ItemCount и SPList.Items.Count? И, что более важно, почему я не могу перебирать элементы в списке, даже если SPList.ItemCount> 0?
Дубликат этого вопроса появляется в Переполнение SharePoint , но не полностью объясняет решение.