CalmQuery <RowLimit> 不工作

CalmQuery <RowLimit> not working

我尝试从列表中的文件夹中的文件夹中获取一些文件。为此,我尝试使用 CalmQueryRowLimit,因为我在该文件夹中有很多文件。

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

$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()

很可能这不是 RowLimit 问题,而是 Query 表达式本身。查询:

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

returns 这些名称匹配 {value} 的项目,而 return 位于 url 在 [=16= 中指定的特定文件夹下的文件].

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

假设结构如下:

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

然后以下示例演示了如何包含 Archive 文件夹中的项目:

1 通过 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()

2 通过 FileDirRef 属性

设置文件夹
$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()