Sharepoint online - 不返回列表中特定视图中的项目

Sharepoint online - Not returning items in a specific view in List

我正在尝试从特定视图获取项目列表。下面是代码

Microsoft.SharePoint.Client.List _lists = context.Web.Lists.GetByTitle("Invoice Register");  
context.Load(_lists);
context.ExecuteQuery();
int listCount = _lists.ItemCount; // i get 49000+ count here
                
View _listsView = _lists.Views.GetByTitle("IT Testing");
context.Load(_listsView);
context.ExecuteQuery();
                

CamlQuery _query = new CamlQuery();
_query.ViewXml = _listsView.ViewQuery;


Microsoft.SharePoint.Client.ListItemCollection items = _lists.GetItems(_query);           
context.Load(items);            
context.ExecuteQuery();
int _viewCount = items.Count; // I get nothing here.
           

我得到的错误是尝试的操作被禁止,因为它超过了管理员强制执行的列表视图阈值

我已经创建了索引

我已将“IT 测试”的限制设置为 5000,如此处所示。

如果有人能指导一下,那将很有帮助。我已经浏览了所有可能的链接。

此致

我正在使用此代码加载很多项目。

var itemsPerPage = 100;
var query = CamlQuery.CreateAllItemsQuery(itemsPerPage);
var loadMoreItems = false;
do
{
    var items = list.GetItems(query);
    ctx.Load(items);
    ctx.ExecuteQuery();

    loadMoreItems = items.Count == itemsPerPage;
    query.ListItemCollectionPosition = items.ListItemCollectionPosition;
 }
 while (loadMoreItems);

基于this

CalmQuery.CreateAllItemsQuery

@Ather Siddiqui,

没有直接的方法来获取视图下的项目,因为视图只有查询架构,没有任何项目。 caml 查询可能会获取视图下相同的项目,但它会触发列表视图阈值。

@user2250152 提供了一个很好的方法,通过Pagination 可以得到5000 条以上的条目。如果你想使用视图查询,你可以改变查询如下:

List tList = context.Web.Lists.GetByTitle("My test list");
            CamlQuery camlQuery = new CamlQuery
            {
                ViewXml = @"<View><Query><Where><Gt><FieldRef Name='ID' /><Value Type='Counter'>20</Value></Gt></Where></Query><OrderBy><FieldRef Name ='FileLeafRef' /></OrderBy><RowLimit>4990</RowLimit></View>"  // your view query
            };

            var itemColl = new List<ListItem>();
         
            do
            {
                ListItemCollection listItemCollection = tList.GetItems(camlQuery);
                context.Load(listItemCollection);
                context.ExecuteQuery();    
                
                //
                itemColl.AddRange(listItemCollection);
                camlQuery.ListItemCollectionPosition = listItemCollection.ListItemCollectionPosition;               

            } while (itemColl.Count < 999); //view row limit   

            Console.WriteLine(itemColl);