0

我需要根据字段值从 SharePoint 列表中选择一个值。字段的类型是 LinkFieldValue。我应该如何编写 CAML 查询?

当我选择带有空查询的项目时,我会按预期收到列表中的所有项目。

当我向查询添加约束时,它返回一个空结果。我尝试按如下方式构建查询:

string.Format("<Where><Eq><FieldRef Name=\"PollInstancePoll\" /><Value "
+"Type=\"Text\">{0}</Value></Eq></Where>",
new LinkFieldValue { NavigateUrl = "/az/Lists/Polls/DispForm.aspx?ID=1",
Text = "example poll" });

这会产生以下查询文本:

<Where><Eq><FieldRef Name="PollInstancePoll" />
<Value Type="Text"><a href="/az/Lists/Polls/DispForm.aspx?ID=1">example poll</a></Value>
</Eq></Where>
4

1 回答 1

1

我已经通过以下查询解决了我的问题:

new SPQuery
{
    Query =
        CAML.Where(
            CAML.And(
                CAML.Contains(
                    CAML.FieldRef("PollInstancePoll"),
                    CAML.Value(pollPath)),
                CAML.Contains(
                    CAML.FieldRef("PollInstancePage"),
                    CAML.Value(pagePath))))
};

本质上,我只检查链接字段的 URL 部分,并将比较值提供为Type="Text". 请务必记住,SharePoint 始终将数据库中的值存储为与服务器相关的 URL。

于 2010-07-12T09:28:30.673 回答