布尔列的CAML查询不起作用

20

你好,我有一个要从桌面应用程序查询的SharePoint列表,我只想检索活动成员,但当我查询时,我只得到了那些不活跃的用户。我的CAML查询有什么问题?

camlQuery.ViewXml = "<<"View">><Query><Where><Eq><FieldRef Name='Active'/><Value Type='Boolean'> " + true + "</Value></Eq></Where></Query></View>"";

我也尝试了以下方法

camlQuery.ViewXml = "<View><Query><Where><Eq><FieldRef Name='Active'/><Value Type='Boolean'> true</Value></Eq></Where></Query></View>";

并且

camlQuery.ViewXml = "<Query><Where><Eq><FieldRef Name='Active'/><Value Type='Boolean'> true</Value></Eq></Where></Query>";

由于我对CAML不熟悉,希望得到帮助。


2
尝试在谷歌上搜索,有很多关于SharePoint中CAML查询的示例。你所写的东西看起来不像是CAML查询。 - Alexander
2
由于某些我不知道的原因,我确信SharePoint有一个漏洞,因为我已经通过相同的方式配置了两个布尔列(列“Returned”和列“Checked”),如果我使用CAML代码按列“Returned”查询spList,它可以工作,但是当我仅更改此CAML代码以按其他列“Checked”查询时,只需将属性名称更改为仅设置内部字段名称的列“Checked”,该代码就不会将任何spListitem带给我作为结果,但它应该返回一些项。非常奇怪的列“A”(Returned)<Where> <Eq> <FieldRef Name ='Returned'/><Value Type - Antonio Augusto
3个回答

49

使用工具来构建CAML查询,例如U2U的Caml Query Builder,可以避免一些烦恼。

在查询中应该使用1和0(而不是true和false)。

<Query><Where>
   <Eq><FieldRef Name="Active" /><Value Type="Boolean">1</Value></Eq>
</Where></Query>

3
有些布尔类型的列,你必须将值设为“true”,而不是“1”——我还无法弄清原因。 - Andrey
4
如果你保持 Type="Integer",你就必须一直使用1和0。 - Arsalan Adam Khatri

2
这对我有用。
camlQuery.ViewXml = "<View>" + "<Query>" + "<Where>" + "<Eq>" +
"<FieldRef Name='Active'/>" + " <Value Type='Boolean'>" + "1" + "</Value>" +
"</Eq>" + "</Where>" + "</Query>" + "</View>";

1
你为什么要这样连接查询字符串? - Patric
@Patric 我被教导要这样做。 - DevTard

1
使用值类型Bool,它可以与"true"、"True"或"TRUE"一起使用。

3
我不认为这种类型存在,你能否发布一个链接到证明它存在的文档? - Shadow The Spring Wizard
1
只需通过Caml查询生成器使用此方法,它就可以正常工作! - Jalali Shakib
嘿,它真的有效。看起来这是一个更好的选择,因为它可以接受1、true、True和TRUE,而布尔值只能接受1。在SP Online上进行了测试。 - Adrian Stanisławski

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接