StringBuilder xmlString = new StringBuilder(
"<QueryPacket xmlns='urn:Microsoft.Search.Query'>"
+ "<Query><SupportedFormats><Format revision='1'> urn:Microsoft.Search.Response.Document:Document"
+ "</Format></SupportedFormats><Context>"
+ " <QueryText language='en-US' type='FQL'>");
// this adds the search free form text
xmlString.Append("Earth");
query.Append(
"</QueryText></Context>"
+ "<Properties>"
+ "<Property name='Name'/>"
+ "<Property name='Department' />"
+ "<Property name='Property1' />"
+ "<Property name='Property2' />"
+ "<Property name='Property3' />"
+ "<Property name='Property4' />"
+ "<Property name='Property5' />"
+ "</Properties>"
+ "<Where>"
+ "<IsNotNull><FieldRef Name='Name'></FieldRef></IsNotNull>"
+ "<And><IsNotNull><FieldRef Name='Property1'></FieldRef></IsNotNull></And>"
+ "</Where>"
+ "</Query></QueryPacket>"
);
QueryServiceSoapClient.QueryEx(query)
我在Name和Property1列上获取null / empty值的数据。 为什么哪里不起作用?
答案 0 :(得分:2)
看起来你的where子句没有正确格式化为@Damith建议。为什么不使用FAST Search for Sharepoint MOSS 2010 Query Tool构建查询。它非常快速有效地完成这类任务。
答案 1 :(得分:0)
+ "<And><IsNotNull><FieldRef Name='Property1'></FieldRef>"+"</IsNotNull>And>"
在IsNotNull
之后的这一行中,您错过了</
,因此该行应为
+ "<And><IsNotNull><FieldRef Name='Property1'></FieldRef>"+"</IsNotNull></And>"
答案 2 :(得分:0)
您的问题是您的<and>
条款位于错误的位置。
它应该是这样的:
<Where>
<And>
<IsNotNull>
<FieldRef Name='Name'>
</FieldRef>
</IsNotNull>
<IsNotNull>
<FieldRef Name='Property1'></FieldRef>
</IsNotNull>
</And>
</Where>
我知道,这是一个奇怪的地方必须放入和子句,但这就是CAML的工作原理。如果您打算使用CAML而不是Linq,我强烈建议您使用CAMLQueryHelper之类的程序。