CalmQuery <RowLimit> 不工作
CalmQuery <RowLimit> not working
我尝试从列表中的文件夹中的文件夹中获取一些文件。为此,我尝试使用 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()
很可能这不是 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()
我尝试从列表中的文件夹中的文件夹中获取一些文件。为此,我尝试使用 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()
很可能这不是 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()