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>
你应该看看可用的比较运算符
上一篇: CAML "NOT IN" query