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

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>

"In" は、複数の Eq/Or ステートメントの代わりに複数の値がある場合に便利です。

ここで詳細に説明されています: http://msdn.microsoft.com/en-us/library/ff625182.aspx

于 2012-09-13T15:28:08.433 に答える
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 に答える