任何人都可以帮我解决这个CAML查询吗?当我将Ascending
属性从TRUE
翻转为FALSE
时(还尝试了True
和False
),它不会重新排序结果集。
CAML的其余部分是正确的,它是由工具生成的,并且返回了相应的结果。
<Where>
<And>
<And>
<Eq>
<FieldRef Name="Branch"/>
<Value Type="Text">Camp 1</Value>
</Eq>
<Eq>
<FieldRef Name="Type"/>
<Value Type="Choice">Day</Value>
</Eq>
</And>
<Geq>
<FieldRef Name="StartDateTime"/>
<Value Type="DateTime">2009-01-05T00:00:00Z</Value>
</Geq>
</And>
<OrderBy>
<FieldRef Ascending="TRUE" Name="Title" />
</OrderBy>
</Where>
答案 0 :(得分:9)
OrderBy不是必须在Where子句之外吗?
<Where>
<And>
<And>
<Eq>
<FieldRef Name="Branch"/>
<Value Type="Text">Camp 1</Value>
</Eq>
<Eq>
<FieldRef Name="Type"/>
<Value Type="Choice">Day</Value>
</Eq>
</And>
<Geq>
<FieldRef Name="StartDateTime"/>
<Value Type="DateTime">2009-01-05T00:00:00Z</Value>
</Geq>
</And>
</Where>
<OrderBy>
<FieldRef Ascending="TRUE" Name="Title" />
</OrderBy>
答案 1 :(得分:4)
我同意上面的答案,&lt;查询&gt;必须在&lt; Where&gt;之外。 另请注意,与DateTime字段进行比较时,通常最好包含IncludeTimeValue属性:
<Geq>
<FieldRef Name="StartDateTime"/>
<Value Type="DateTime" IncludeTimeValue="FALSE">2009-01-05T00:00:00Z</Value>
</Geq>
并将其设置为false或true,具体取决于您是否要在查询中包含时间值。
答案 2 :(得分:0)
我花了将近一整周的时间来尝试使用Client OM CamlQuery对象获取日期订单。最后我意识到我必须设置
camlQuery.DatesInUtc = true;
在我看来,如果您使用本机对象模型和SharePoint默认情况下将该日期解释为UTC的SPQuery对象(在我们的环境中),只要您使用ClientOM移动到CamlQuery对象,就需要设置此参数