CAML“NOT IN”查询

有没有办法在SharePoint 2010中执行诸如“NOT IN”行为之类的操作? 我可以很容易地实现这样的IN行为:

<Where>
   <In>
      <FieldRef Name="ID"/>
      <Values>
         <Value Type="Counter">1</Value>
         <Value Type="Counter">2</Value>
         <Value Type="Counter">3</Value>
         <Value Type="Counter">4</Value>
         <Value Type="Counter">5</Value>
      </Values>
   </In>
</Where>

但有没有办法来选择所有值不在值枚举?

这里是USE CASE:我有一个AllowMultipleValues = true的Lookup字段,我需要从LookupList中获取所有项目,这些项目不包括在Lookup字段中

提前致谢!


从SharePoint 2010开始,有可能适用于您的NotIncludes元素。 来自MSDN:

如果指定的字段是允许多个值的Lookup字段,则指定从FieldRef元素指定的字段的列表项中排除Value元素。

模板:

<NotIncludes>
    <FieldRef Name="Field_Name" />
    <Value Type="Field_Type" />
    <XML />
</NotIncludes>
  • 更多阅读:不包含元素

  • 为了得到'In'的相反行为,你必须做一个嵌套的'Neq'查询。 如果您正在处理具有多个值的查找字段,则可以使用'NotIncludes'替代'Neq'或将其与'Neq'组合。

    <Query>
        <Where>
            <And>
                <And>
                    <Neq>
                        <FieldRef Name="ID" /><Value Type="Counter">5</Value>
                    </Neq>
                    <Neq>
                        <FieldRef Name="ID" /><Value Type="Counter">13</Value>
                    </Neq>
                </And>
                <And>
                    <NotIncludes>
                        <FieldRef Name="children" /><Value Type="Lookup">20</Value>
                    </NotIncludes>
                    <NotIncludes>
                        <FieldRef Name="children" /><Value Type="Lookup">32</Value>
                    </NotIncludes>
                </And>
            </And>
        </Where>
    </Query>
    

    如果你想要更多的变量,那么需要完成更多的嵌套。 玩的开心。


    我认为不平等选项将是构建此CAML查询的最佳方式

    也许这(没有测试这个,所以裸露在我身边)

    <Query>
       <Where>
         <And>
           <Neq>
              <FieldRef Name="ID" /><Value Type="Counter">1</Value>
           </Neq>
           <Neq>
              <FieldRef Name="ID" /><Value Type="Counter">2</Value>
           </Neq>
           <Neq>
              <FieldRef Name="ID" /><Value Type="Counter">3</Value>
           </Neq>
         </And>
       </Where>
    </Query>
    

    你应该看看可用的比较运算符

  • 包含
  • 开始于
  • 等式,相等
  • Neq,不等于
  • Gt,大于
  • Lt,小于
  • Geq,大于或等于
  • Leq,小于或等于
  • DateRangesOverlap,将具有指定值的重复事件中的日期进行比较
  • IsNotNull
  • 一片空白
  • 链接地址: http://www.djcxy.com/p/11007.html

    上一篇: CAML "NOT IN" query

    下一篇: Why .PHONY:target and not target:.PHONY?