2012-01-11 17 views
1

CAMLクエリからListItem.ContentType.Hiddenにフィルタリングする必要があります。CAMLクエリを使用してContentType.Hiddenを確認する方法?

SharePointをこのコードのようにLinqにする。

var query = from item in list.GetItems(CamlQuery.CreateAllItemsQuery()) 
       where item.ContentType.Hidden == false select item; 

純粋なCAMLクエリでチェックすると、コードを記述する必要がありますか?

簡単な質問です。

ありがとうございます。

答えて

4

純粋なCAMLクエリでHiddenプロパティをチェックすることはできません。 CAMLでは、ContentTypeの名前とIDのみが使用可能です(フィールドContentTypeおよびContentTypeID)。除外されなければならない唯一のいくつかの隠されたコンテンツタイプがある場合は

最初にこれらの隠されたコンテンツタイプをロードし、CAMLクエリでそれらを除外することができます:

エキス隠されたコンテンツタイプ:

SPWeb web = // ... 
IEnumerable<string> contentTypeIds = web.AvailableContentTypes 
    .Cast<SPContentType>() 
    .Where(ct => ct.Hidden) 
    .Select(ct => ct.Id.ToString()); 

CAMLクエリ:

<Where> 
    <And> 
    <Neq> 
     <FieldRef Name='ContentTypeID'/> 
     <Value Type='Text'>[HiddenContentTypeId]</Value> 
    </Neq> 
    <Neq> 
     <FieldRef Name='ContentTypeID'/> 
     <Value Type='Text'>[AnotherHiddenContentTypeId]</Value> 
    </Neq> 
    </And> 
    <!-- more hidden content types --> 
</Where> 
+0

こんにちは、Mr.Stefan。あなたの説明は簡単で、とても簡単です。あなたの大きなアドバイスをよろしくお願いします。 – user834964

関連する問題