C# 编写CAML查询以查询具有托管元数据列的SPList

C# 编写CAML查询以查询具有托管元数据列的SPList,c#,sharepoint-2010,caml,C#,Sharepoint 2010,Caml,我有一个带有托管元数据列的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""

我有一个带有托管元数据列的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查询不起作用
SPQuery oQuery=新建SPQuery();
字符串strQuery=@“7392ec1d-3f35-4c5b-b6ad-f80ff15ed718”;
Query=strQuery;
///这个linq查询工作得非常好
var itms=(来自oList.Items中的SPListItem itm
其中itm[“分类列”].ToString()包含(“7392ec1d-3f35-4c5b-b6ad-f80ff15ed718”)
选择itm.ToList();
我的问题是,出于某种原因,我需要使用CAML查询,而我无法找到一种方法来组合CAML查询,以便查询列为托管元数据列的列表


请帮帮我。谢谢。

SPQuery添加查询标记本身:

 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;
SPQuery oQuery=new SPQuery();
字符串strQuery=@“7392ec1d-3f35-4c5b-b6ad-f80ff15ed718”;
Query=strQuery;

如果不使用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>

14
15
当存在多个值而不是多个Eq/Or语句时,“In”是一种方便

详细说明如下:

在我发布这个问题之前,我已经试过了,但100%都不起作用。看来这对我来说是世界末日。哈哈哈,结尾标签不见了。即使是微软的例子也缺少这些标签,每个人都会复制和粘贴它,就像它工作一样(人们甚至接受它作为工作答案,这更令人困惑)。如果没有这些结束标记,我会得到预期的运行时错误,即这些结束标记丢失。