Sharepoint CAML查询…有什么问题吗?
我有一个不断抛出错误的CAML查询 System.Web.Services.dll中发生了类型为“System.Web.Services.Protocols.SoapException”的首次意外异常 线程0x1574已退出,代码为0 0x0 是的,所以不是很有描述性。我猜这与我如何使用Or元素有关 以下是我的查询:Sharepoint CAML查询…有什么问题吗?,sharepoint,caml,Sharepoint,Caml,我有一个不断抛出错误的CAML查询 System.Web.Services.dll中发生了类型为“System.Web.Services.Protocols.SoapException”的首次意外异常 线程0x1574已退出,代码为0 0x0 是的,所以不是很有描述性。我猜这与我如何使用Or元素有关 以下是我的查询: <Where> <And> <IsNotNull> <FieldRef Name='myRefID' />
<Where>
<And>
<IsNotNull>
<FieldRef Name='myRefID' />
</IsNotNull>
<And>
<Or>
<In>
<FieldRef Name='myRefID' />
<Values>
<Value Type='Number'>1</Value>
<Value Type='Number'>2</Value>
<Value Type='Number'>3</Value>
<Value Type='Number'>4</Value>
...
<Value Type='Number'>499</Value>
</Values>
</In>
<In>
<FieldRef Name='myRefID' />
<Values>
<Value Type='Number'>500</Value>
<Value Type='Number'>501</Value>
<Value Type='Number'>502</Value>
<Value Type='Number'>503</Value>
...
<Value Type='Number'>999</Value>
</Values>
</In>
<In>
<FieldRef Name='myRefID' />
<Values>
<Value Type='Number'>1000</Value>
<Value Type='Number'>1001</Value>
<Value Type='Number'>1002</Value>
<Value Type='Number'>1003</Value>
...
<Value Type='Number'>1111</Value>
</Values>
</In>
</Or>
</And>
</And>
</Where>
还要注意的是,我需要搜索特定的ID,这就是为什么我要使用这么多IN子句的原因。以上ID的顺序仅用于说明目的。在我的实际例子中,数字不是按顺序排列的。因此,我不能使用在起始号码和结束号码之间搜索的查询。您有语义错误。只需删除此包装器元素:
<Where>
<And>
<IsNotNull>
<FieldRef Name='myRefID' />
</IsNotNull>
<And> <<================================ remove it
<Or>
<In>
<FieldRef Name='myRefID' />
<Values>
<Value Type='Number'>1</Value>
<Value Type='Number'>2</Value>
要简化CAML查询创建,请使用以下工具:
-在我看来,这是最好的
您可以尝试这个查询,您不需要运算符,记住CAML中的运算符只能处理2个元素
<Where>
<And>
<IsNotNull>
<FieldRef Name='myRefID' />
</IsNotNull>
<In>
<FieldRef Name='myRefID' />
<Values>
<Value Type='Number'>1</Value>
<Value Type='Number'>2</Value>
<Value Type='Number'>3</Value>
<Value Type='Number'>4</Value>
<Value Type='Number'>499</Value>
</Values>
</In>
</And>
</Where>