SharePoint Online:使用CSOM获取文档库子项计数

时间:2017-07-27 13:55:50

标签: sharepoint csom client-object-model sharepoint-clientobject

我的要求是使用CSOM获取文档库的子项目计数。计数应仅为直接子计数,不应包括子子计数。我试图使用下面的代码来实现这一目标:

var newObjClientContext = this.GetSharePointClientContext(accessToken, fullUri);
WebCollection collWeb = newObjClientContext.Web.GetSubwebsForCurrentUser(new SubwebQuery());
var documentLibrary = newObjClientContext.Web.Lists.GetById(docID);

ListItemCollection ltitems = null;

string vquery = @"<View >
                <Query>
                    <Where> 
                        <Or> 
                            <Eq>
                                <FieldRef Name='FSObjType' /> 
                                <Value Type='Lookup'>1</Value>
                            </Eq> 
                            <Eq>
                                <FieldRef Name='FSObjType' /> 
                                <Value Type='Lookup'>0</Value>
                            </Eq> 
                            </Or> 
                        </Where>
                        <OrderBy><FieldRef Name='FileLeafRef' Ascending='TRUE'></FieldRef></OrderBy>                                        
                    </Query>
                    <RowLimit>" + recCount + @"</RowLimit>
                    </View>";

CamlQuery camlQuery = new CamlQuery();

camlQuery.ViewXml = vquery;
ltitems = documentLibrary.GetItems(camlQuery);
newObjClientContext.Load(documentLibrary);
newObjClientContext.Load(ltitems, lists => lists.IncludeWithDefaultProperties(l => l.ParentList));

newObjClientContext.ExecuteQuery();

int totalcount = documentLibrary.ItemCount; //It includes count of all the items present at all levels.

任何人都可以建议我如何才能让孩子在上一步计算?

1 个答案:

答案 0 :(得分:1)

如果我已正确解释您的要求,您希望文档库的根级子项目计数?使用文档库ItemCount的{​​{1}}属性可以轻松实现这一点。

RootFolder

或者您是否需要文档库中每个文件夹的子项目计数?这可以通过var list = web.Lists.GetByTitle("Documents"); cc.Load(list.RootFolder, l => l.ItemCount); cc.ExecuteQuery(); var rootChildItemCount = list.RootFolder.ItemCount; 来实现。如果您需要解决方案,请告诉我。