サーバー側コードからのクエリ
最終更新日: 2010年2月2日
適用対象: SharePoint Foundation 2010
この記事の内容
CAML と SPQuery を使用したクエリ
LINQ to SharePoint プロバイダーによるクエリ
CAML と LINQ の比較
ここでは、サーバー側のコードで Microsoft SharePoint Foundation データにクエリを実行する 2 つの方法の違いを大まかに説明します。
CAML と SPQuery を使用したクエリ
標準のサーバー オブジェクト モデルを使用することで、あらゆる種類の SharePoint Foundation データ (リスト以外のデータなど) に対するクエリを実行できます。クエリで最も重要なクラスは、SPQuery です。Collaborative Application Markup Language (CAML) で記述されたクエリの各部分は、SPQuery オブジェクトの Query、Joins、ProjectedFields、および ViewFields の各プロパティに割り当てられます。その後、このオブジェクトは、クエリされたアイテムを返す SPList.GetItems() のようなメソッドに渡されます。
詳細については、「リストのオブジェクトとコレクションを操作する」と「[方法] リストからアイテムを返す」を参照してください。
LINQ to SharePoint プロバイダーによるクエリ
SharePoint Foundation のリスト データだけにクエリを実行するには、LINQ to SharePoint プロバイダーを使用します。クエリを LINQ 構文で書き、その結果をリターン オブジェクトに割り当てます。クエリは、リターン オブジェクトが最初に列挙されたときに実行されます。このとき、クエリは LINQ to SharePoint プロバイダーによって CAML クエリに変換されてから、ほかの CAML クエリと同様に処理されます。詳細については、「LINQ to SharePoint でデータを管理する」というノードの下位にあるトピックを参照してください。
CAML と LINQ の比較
CAML クエリの主な利点は、LINQ 構文から CAML 構文へのクエリの変換が不要なことから、パフォーマンス上有利な場合があることです。
LINQ クエリを使用する主な利点は、次のとおりです。
C# や Microsoft Visual Basic に組み込まれている LINQ 構文と LINQ キーワードを使用できます。これに対し、CAML XML はエラーが発生しやすく、SharePoint Foundation にしか適用できません。
LINQ to SharePoint プロバイダーでは、厳密に型指定されたリスト アイテム オブジェクトを操作します。SharePoint Foundation クライアント オブジェクト モデルでは、SPListItem オブジェクトのどの 2 つをとっても型が同じあり、このことはそれらが表すアイテムのリストどうしの種類が大きく異なる場合でも変わりません。ただし、LINQ to SharePoint プロバイダーは、エンティティ クラス (ある Web サイト内の任意のリストで使用される各コンテンツ タイプに対するクラスなど) を使用します。たとえば、お知らせリストのアイテムは Announcement 型のオブジェクトであり、タスク リストのアイテムは Task 型のオブジェクトです。