Sharepoint 当或中的变量超过2个时,CAML查询错误

Sharepoint 当或中的变量超过2个时,CAML查询错误,sharepoint,caml,Sharepoint,Caml,在我的SharePoint CAML查询中,当使用两个输入进行筛选时,它是成功的。然而,当我有3个或更多,它失败了 当使用两个以上的输入时,是否使用不同的格式 通过(2个字段): <Where> <And> <Or> <Eq><FieldRef Name="Header1Ref"/><Value Type="Text">H1</Value></Eq>

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

H1
氢
文件

失败(3个字段):

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

H1
氢
H3
文件

错误:

<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>
<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.HandleComeException(COMException comEx) 在 Microsoft.SharePoint.Library.SPRequest.GetListItemDataWithCallback2(IListItemSqlClient pSqlClient,字符串bstrUrl,字符串bstrListName,字符串bstrViewName, 字符串bstrViewXml,SAFEARRAYFLAGS fsafarrayFlags, ISP2DSafeArrayWriter pSACallback、ISPDataCallback、pPagingCallback、, ISPDataCallback,ISPDataCallback,ISPDataCallback pFilterLinkCallback,ISPDataCallback pSchemaCallback,ISPDataCallback pRowCountCallback、Boolean和pbMaximalView)位于 Microsoft.SharePoint.SPListItemCollection.EnsureListItemsData()位于 Microsoft.SharePoint.SPListItemCollection.get_Count()


在CAML语法中,
以及二进制运算符。因此,它们必须只有两个操作数。如果您需要更多,您必须相应地嵌套它们。就你而言:

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

H1
氢
H3
文件