1

我有一个带有托管元数据列的 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 查询来查询该列是托管元数据列的列表。

请帮我。谢谢。

4

2 回答 2

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;
于 2012-08-02T13:04:30.620 回答
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

于 2012-09-13T15:28:08.433 回答