如何编写SPQuery来过滤基于LinkFieldValue的项目?

时间:2010-07-12 07:32:42

标签: sharepoint spquery linkfieldvalue

我需要根据字段值从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>

1 个答案:

答案 0 :(得分:1)

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

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

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