2011-07-01 20 views
5

私は大きなドキュメントライブラリ(現時点では約6000ドキュメント)を持っており、カスタムフィールド値(ライブラリのカスタム列)に基づいてドキュメントを探す必要があります。 。Sharepoint 2010クライアントオブジェクトモデル - ラージライブラリ - 繰り返しなしでアイテムを検索

6000個の文書すべてを繰り返し処理せずにこの文書を元に戻す方法はありますか?

私は、ある時点で反復が発生しなければならないことを理解していますが、クライアント側にすべて転送するのではなく、SharePointサーバー側で行うことをお勧めします。

ありがとうございます。

答えて

3

Sharepointに問い合わせることができます。サーバー上で実行され、指定した条件に一致する項目のみを戻すCAML照会を発行します。検索するカスタム列の名前を指定し、検索する値を指定します。効率を上げるために、いくつかのフィールドだけを尋ねることができます(例えば、ドキュメントURL)。したがって、アイテムを見つけるためにリスト内のドキュメントを繰り返し処理する必要はありません。

http://msdn.microsoft.com/en-us/library/ee956524.aspxについての議論があります。また、javascriptやsilvelightから例を見つけることもできます。

例CAML:

 CamlQuery camlQuery = new CamlQuery(); 
    camlQuery.ViewXml = 
     @"<View> 
      <Query> 
       <Where> 
       <Eq> 
        <FieldRef Name='FileLeafRef'/> 
        <Value Type='Text'>Test.docx</Value> 
       </Eq> 
       </Where> 
       <RowLimit>1</RowLimit> 
      </Query> 
      </View>"; 
+0

Camlのクエリはいえ、ファイル名で文書を返します。あなたはどのように文書IDで質問しますか?私はすでにドキュメントID、ドキュメントID値などを成功させていませんでした。 – Russell

+0

これがSharepointのIDフィールドであれば、名前は "ID"になります。これはカスタムフィールド名よりも "Document_x0020_ID" 。 Sharepointは、フィールド名のスペースをx0020に置き換えます。また、Sharepointは長すぎる場合はフィールド名を切り捨て、フィールドのタイプも知る必要があります。組み込みの「ID」フィールドの場合、タイプはCounterです。 <値タイプ= 'カウンタ'> 123。フィールドがカスタムテキストフィールドの場合: xxxxが動作するはずです。 – KJRB

+0

上記の提案がうまくいかない場合(元のフィールド名がDocument IDと異なるものに設定されている可能性があります)、 "Document ID"列の内部フィールド名がわかる必要があります。それを見る1つの方法は、問題のサイト列のURLを見ることです。そのページのURLに内部名が表示されます(フィールド=)。フィールドの表示名は、interanlの名前と同じではありません。 CAMLクエリは内部名を使用します。 – KJRB

関連する問題