我正在尝试使用CAML查询中的以下where子句查询整个网站集中的所有任务。据我所知,这段代码完全符合这个可能可靠的blog entry。任何人都知道它为什么不起作用? 感谢您的阅读
我的代码甚至不会执行,因为它抱怨我的CAML查询
"<Where>" +
"<And>" +
"<BeginsWith>" +
"<FieldRef Name=\"ContentTypeId\" />" +
"<Value Type=\"ContentTypeId\">0x0108009D937E40833C472CBC11D246C635B662</Value>" +
"</BeginsWith>" +
"<Eq>" +
"<FieldRef Name=\"TaskStatus\" />" +
"<Value Type=\"Text\">Completed</Value>" +
"</Eq>" +
"<Eq>" +
"<FieldRef Name=\"AssignedTo\" />" +
"<Value Type=\"Lookup\">" + id + "</Value>" +
"</Eq>" +
"</And>" +
"</Where>" +
"<OrderBy>" +
"<FieldRef Name=\"Title\"/>" +
"</OrderBy>";
答案 0 :(得分:0)
And
元素中有多个条件。 And
元素仅支持记录为here的两个条件。使用仅包含两个条件或其他And
元素的多个嵌套And
元素重写查询。
答案 1 :(得分:0)
我同意上述答案。由于此处有多个And元素,并且任何And元素仅支持2个合取,因此必须使用嵌套的And元素来结合多个条件。如果您在SharePoint中使用默认任务列表,请尝试以下CAML查询 -
<Query>
<Where>
<And>
<BeginsWith>
<FieldRef Name="ContentTypeId" />
<Value Type="Counter">0x0108009D937E40833C472CBC11D246C635B662</Value>
</BeginsWith>
<And>
<Eq>
<FieldRef Name="TaskStatus" />
<Value Type="Choice">Completed</Value>
</Eq>
<Eq>
<FieldRef Name="AssignedTo" />
<Value Type="UserMulti">id</Value>
</Eq>
</And>
</And>
</Where>
<OrderBy>
<FieldRef Name="Title" Ascending="False" />
</OrderBy>
</Query>