8

有没有办法在 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>

但是有没有办法选择所有不在值枚举中的值?

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

提前致谢!

4

4 回答 4

2

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

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

模板:

<NotIncludes>
    <FieldRef Name="Field_Name" />
    <Value Type="Field_Type" />
    <XML />
</NotIncludes>
于 2014-01-02T14:32:45.940 回答
1

要获得与“In”相反的行为,您必须进行嵌套的“Neq”查询。如果您正在处理具有多个值的查找字段,则“NotIncludes”可以替换或与“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>

如果您想要更多变量,则需要进行更多嵌套。玩得开心。

于 2015-04-30T16:44:29.350 回答
0

我认为不相等选项将是构建此 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
  • 一片空白
于 2012-07-20T20:02:52.277 回答
0

我最接近的是使用<NotIncludes></NotIncludes>,但由于某种原因,它的工作方式与<In></In>. 在<In>我可以使用<Values>. 看起来<NotIncludes>您只能指定一个值。其余部分必须被<Or>编辑,类似于<Neq>.

于 2013-12-03T12:09:33.737 回答