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