我有一个带有托管元数据列的SPList,这是我的caml查询。
/// This caml query doesn't work
SPQuery oQuery = new SPQuery();
string strQuery = @"<Query><Where><In><FieldRef LookupId=""TRUE"" Name=""TaxonomyColumn"" /><Values><Value Type=""Text"">7392ec1d-3f35-4c5b-b6ad-f80ff15ed718</Value></Values></In></Where></Query>";
oQuery.Query = strQuery;
/// This linq query works exactly fine
var itms = (from SPListItem itm in oList.Items
where itm["TaxonomyColumn"].ToString().Contains("7392ec1d-3f35-4c5b-b6ad-f80ff15ed718")
select itm).ToList();
我的问题是我出于某种原因需要使用CAML查询,我不能想办法解决如何编写我的CAML查询以查询列是托管元数据列的列表。
请帮帮我。感谢。
答案 0 :(得分:0)
SPQuery添加了Query标记本身:
SPQuery oQuery = new SPQuery();
string strQuery = @"<Query><Where><Contains><FieldRef Name='TaxonomyColumn' /><Value Type='Text'>7392ec1d-3f35-4c5b-b6ad-f80ff15ed718</Value></Contains></Where></Query>";
oQuery.Query = strQuery;
答案 1 :(得分:0)
您不使用GUID,您需要使用查找ID。你使用TaxonomyField.GetWssIdsOfKeywordTerm()找到这个id,并写下这样的CAML:
<Query>
<Where>
<In>
<FieldRef LookupId="TRUE" Name="ItemType" />
<Values>
<Value Type="Integer">14</Value>
<Value Type="Integer">15</Value>
</Values>
</In>
</Where>
</Query>
当有多个值而不是多个Eq / Or语句时,“In”是一种便利。
这里详细解释: http://msdn.microsoft.com/en-us/library/ff625182.aspx