OR

时间:2019-12-14 09:34:26

标签: sharepoint caml

在我的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()

1 个答案:

答案 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>