gpt4 book ai didi

c# - 对 SharePoint 列表的 CAML 查询,按查找字段排序

转载 作者:太空狗 更新时间:2023-10-29 20:18:23 24 4
gpt4 key购买 nike

我正在尝试通过 CAML 从 SharePoint 中提取列表,并且我希望返回的列表按特定字段排序。该字段是查找字段。当我将 OrderBy 设置为查找字段时,查询无序地返回,如果我使用文本字段就可以了。

当我在编辑器中构建它时,U2U CAML 查询构建器将返回此查询。

这是我如何构建和执行查询的代码片段:

String baseQuery = "<Query><Where><Eq><FieldRef Name='paApproved' /><Value Type='Boolean'>1</Value></Eq></Where><OrderBy><FieldRef Name='paState' Ascending='True' LookupValue='TRUE' /></OrderBy></Query>";

qStates.Query = baseQuery;

SPListItemCollection byState = web.Lists["paUpdates"].GetItems(qStates);

剩下的就是一个for循环,解析集合并显示出来。如有必要,我可以发布。

这是 CAML 查询工具进行的 SOAP 调用,我用 wireshark 从 HTTP 流中抓取了它。

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<GetListItems xmlns="http://schemas.microsoft.com/sharepoint/soap/">
<listName>paUpdates</listName>
<query>
<Query xmlns="">
<Where>
<Eq>
<FieldRef Name="paApproved" />
<Value Type="Boolean">1</Value>
</Eq>
</Where>
<OrderBy>
<FieldRef Name="paState" Ascending="False" />
</OrderBy>
</Query>
</query>
<viewFields>
<ViewFields xmlns="" />
</viewFields>
<queryOptions>
<QueryOptions xmlns="" />
</queryOptions>
</GetListItems>
</soap:Body>
</soap:Envelope>

无论出于何种原因 CAML 查询工具可以工作,我的代码都不能。有人知道为什么吗?提前致谢。

编辑以反射(reflect)我实际测试的代码。我有一些代码的值不正确。

最佳答案

您发布的代码示例与 wireshark 查询不匹配:

<Query><Where><Eq><FieldRef Name='paApproved' /><Value Type='Boolean'>1</Value></Eq></Where><OrderBy><FieldRef Name='Title' Ascending='True' /></OrderBy></Query>

应该是:

<Where><Eq><FieldRef Name="paApproved" /><Value Type="Boolean">1</Value></Eq></Where><OrderBy><FieldRef Name="paState" Ascending="False" /></OrderBy>

您不需要 <Query></Query>元素 ( see here for an example )。

关于c# - 对 SharePoint 列表的 CAML 查询,按查找字段排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4923209/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com