在我的SharePoint CAML查询中,当使用两个输入进行筛选时,它是成功的。但是,当我有3个或更多时,它就会失败。
使用两个以上的输入时,是否可以使用其他格式?
通过(2个字段):
<Where>
<And>
<Or>
<Eq><FieldRef Name="Header1Ref"/><Value Type="Text">H1</Value></Eq>
<Eq><FieldRef Name="Header1Ref"/><Value Type="Text">H2</Value></Eq>
</Or>
<Neq><FieldRef Name ="ContentType"/><Value Type="Text">Document</Value></Neq>
</And>
</Where>
失败(3个字段):
<Where>
<And>
<Or>
<Eq><FieldRef Name="Header1Ref"/><Value Type="Text">H1</Value></Eq>
<Eq><FieldRef Name="Header1Ref"/><Value Type="Text">H2</Value></Eq>
<Eq><FieldRef Name="Header1Ref"/><Value Type="Text">H3</Value></Eq>
</Or>
<Neq><FieldRef Name ="ContentType"/><Value Type="Text">Document</Value></Neq>
</And>
</Where>
错误:
无法完成此操作。请再试一遍。在 Microsoft.SharePoint.SPGlobal.HandleComException(COMException comEx) 在 Microsoft.SharePoint.Library.SPRequest.GetListItemDataWithCallback2(IListItemSqlClient pSqlClient,字符串bstrUrl,字符串bstrListName,字符串bstrViewName, 字符串bstrViewXml,SAFEARRAYFLAGS fSafeArrayFlags, ISP2DSafeArrayWriter pSACallback,ISPDataCallback pPagingCallback, ISPDataCallback pPagingPrevCallback,ISPDataCallback pFilterLinkCallback,ISPDataCallback pSchemaCallback,ISPDataCallback pRowCountCallback,Boolean&pbMaximalView) Microsoft.SharePoint.SPListItemCollection.EnsureListItemsData()在 Microsoft.SharePoint.SPListItemCollection.get_Count()
答案 0 :(得分:1)
在CAML语法中,<Or>
和<And>
以及 binary 运算符。因此,它们必须仅具有两个操作数。如果需要更多,则必须相应地嵌套它们。就您而言:
<Where>
<And>
<Or>
<Or>
<Eq><FieldRef Name="Header1Ref"/><Value Type="Text">H1</Value></Eq>
<Eq><FieldRef Name="Header1Ref"/><Value Type="Text">H2</Value></Eq>
</Or>
<Eq><FieldRef Name="Header1Ref"/><Value Type="Text">H3</Value></Eq>
</Or>
<Neq><FieldRef Name ="ContentType"/><Value Type="Text">Document</Value></Neq>
</And>
</Where>