2016-03-21 54 views
1

我尝试从列表中的文件夹中获取文件夹中的某些文件。为此,我尝试使用CalmQueryRowLimit,因为我在该文件夹中有很多文件。CalmQuery <RowLimit>无法正常工作

但是当我执行代码时,看起来我的行限制不起作用。

$list = $context.Web.Lists.GetByTitle($ListName) 
$context.Load($list) 

$query = New-Object Microsoft.SharePoint.Client.CamlQuery 
$query.ViewXml = "<View Scope='RecursiveAll'> " + 
       "<RowLimit>5000</RowLimit>"+ 
       "<Query>" + 
        "<OrderBy>"+ 
        "<FieldRef Name='FileLeafRef' Ascending='True' />"+ 
        "</OrderBy>"+ 
        "<Where>" + 
         "<Eq>"+ 
         "<FieldRef Name='FileLeafRef' />"+ 
         "<Value Type='File'>EDMS API/APICAL Invoice</Value>"+ 
         "</Eq>"+ 
        "</Where>"+ 
       "</Query>"+ 
      "</View>" 
$listItems = $list.getItems($query) 
$context.Load($listItems) 
$context.ExecuteQuery() 

回答

0

最有可能它不是一个RowLimit问题,而是Query表达式本身。查询:

<Where> 
    <Eq> 
     <FieldRef Name='FileLeafRef' /> 
     <Value Type='File'>{value}</Value> 
    </Eq> 
</Where> 

回报项目的名称相匹配{value},这反过来又不会返回位于该网址在{value}指定一个特定文件夹下的文件。

如果您只想包含位于特定文件夹中的文件,您可以考虑至少以下两种方法。

假设以下结构:

News (sub site) 
    | 
    Documents (library) 
     | 
     Archive (folder) 

然后下面的实施例说明了如何包括从Archive文件夹项目:

集文件夹通过CamlQuery.FolderServerRelativeUrl属性:

$query = New-Object Microsoft.SharePoint.Client.CamlQuery 
$query.ViewXml = "<View Scope='RecursiveAll'> " + 
       "<RowLimit>20</RowLimit>"+ 
       "<Query>" + 
        "<OrderBy>"+ 
        "<FieldRef Name='FileLeafRef' Ascending='True' />"+ 
        "</OrderBy>"+ 
       "</Query>"+ 
      "</View>" 
$query.FolderServerRelativeUrl = "/News/Documents/Archive" 
$listItems = $list.getItems($query) 
$context.Load($listItems) 
$context.ExecuteQuery() 

通过0123设置文件夹财产

$query = New-Object Microsoft.SharePoint.Client.CamlQuery 
$query.ViewXml = "<View Scope='RecursiveAll'> " + 
       "<RowLimit>20</RowLimit>"+ 
       "<Query>" + 
        "<OrderBy>"+ 
        "<FieldRef Name='FileLeafRef' Ascending='True' />"+ 
        "</OrderBy>"+ 
        "<Where>" + 
         "<Eq>"+ 
         "<FieldRef Name='FileDirRef' />"+ 
         "<Value Type='File'>/News/Documents/Archive</Value>"+ 
         "</Eq>"+ 
        "</Where>"+ 
       "</Query>"+ 
      "</View>" 
$listItems = $list.getItems($query) 
$context.Load($listItems) 
$context.ExecuteQuery() 
+1

谢谢,现在工作正常。 –