クエリ: データ ソースからの情報の取得
クエリを使用すると、特定の条件に一致するデータが返されます。 たとえば、米国に住む顧客の数を知りたい場合、顧客の一覧をスキャンして、住所に指定された国/地域をチェックするクエリを作成します。
クエリを作成し、アプリケーションのモデルに保存できます。 その後、クエリ デザイナーを使用して、検索条件を指定することができます。 必要な機能がクエリ デザイナーで提供されていない場合は、いくつかのコードを記述してクエリを拡張できます。 条件を指定した後、画面でクエリを使用するか、ビジネス ロジックの一部として実行します。
クエリを作成する
ソリューション エクスプローラーでクエリを作成することができます。 クエリは、アプリケーションのモデルにある 1 つのエンティティまたはテーブルにのみ基づいています (たとえば、Customer エンティティ)。 クエリは、アプリケーションのモデルにある他のクエリに基づくこともできます。 クエリの基になるエンティティ、テーブル、またはクエリは、クエリのソース データと呼びます。 詳細については、「方法: クエリを追加、削除、変更する」を参照してください。
クエリ デザイナーを使用してクエリをデザインする
ほとんどの場合、クエリ デザイナーを使用してクエリを視覚的にデザインすることができます。 デザイナーで選択することにより、フィルター条件とフィルター グループ、および並べ替え条件とパラメーターをクエリに追加します。 詳細については、「方法: クエリ デザイナーを使用してクエリをデザインする」を参照してください。
フィルター条件
1 つまたは複数のフィルター条件を追加して、クエリの結果を限定できます。 フィルター条件は、データのそれぞれの行が満たす必要のあるルールについて説明しています。 規則を遵守する行はクエリの結果に含まれます。 フィルター条件には、次の 3 つの基本的な部分が含まれています。
選択プロパティ
比較値
演算子
選択プロパティとは、フィルター条件の基準として使用するプロパティです。 たとえば、特定の注文日の販売注文を返すには、選択プロパティとして OrderDate を使用できます。 選択プロパティには、ソース データ内のプロパティ、または関連エンティティやテーブルのプロパティを指定できます。 クエリ デザイナーでは、多様性が 0 から 1 または 1 の関連エンティティやテーブルに対してのみプロパティが表示されます。 たとえば、販売注文には 1 人の顧客しかありません。 したがって、販売注文を返すクエリでは、フィルター条件の一部として、顧客のプロパティを選択できます。 多くの多様性を持つ関連エンティティやテーブルでプロパティを使用する場合は、コードを使用してクエリを拡張する必要があります。
比較値は、選択プロパティと比較されます。 比較値は、文字列などのリテラル値 (「9/22/2009 12:00:00 AM」)、選択プロパティ、パラメーター、または**「今すぐ」、「今日」、「週の始め」**などの相対値を取ることができます。
演算子とは、比較の種類を指定する記号です。 たとえば、「9/22/2009 12:00:00 AM」未満の受注日の販売注文を返すには、「<」演算子を選択します。
この例で説明されている完全なフィルター条件は Where OrderDate < 9/22/2009 12:00:00 AM。
フィルター条件を他のフィルター条件に関連付けるために、次のいずれかの論理演算子を使用できます。And、Or、And Not、Or Not。
条件を並べ替えるには、デザイナーの所定の場所にドラッグします。
次の図では、フィルター条件の一部を示しています。
フィルター グループ
フィルター条件をグループ化して、残りのフィルター条件とは別に、1 つの単位としてまとめて評価されるようにします。 これを実現するには、クエリ デザイナーでフィルター グループを作成します。
フィルター条件のグループ化は、数学の方程式や論理式の一部をかっこで囲むのと似ています。 条件をグループ化すると、グループの最初の条件の前に表示される論理演算子は、グループ全体に適用されます。
個別のフィルター条件と同じように、デザイナーで、リスト内の目的の位置にドラッグすることによってフィルター グループの順序を変更することができます。
2 つのフィルター グループを次の図に示します。
並べ替え用語
1 つまたは複数の並べ替え用語を追加して、クエリの結果でレコードを表示する既定の順序を指定することができます。 並べ替え用語には、プロパティと方向 (たとえば、OrderDate や Ascending) が含まれます。 並べ替え用語は、画面で表示されるレコードの既定の並べ替え順序を定義します。 ユーザーは、画面のユーザー インターフェイス (UI) を選択することによって、別の順序でレコードを表示できます。 クエリ デザイナーでは、リスト内の目的の位置にドラッグすることによって並べ替え用語の順序を変更することができます。
パラメーター
ユーザーが動的にクエリ結果をフィルター処理できるように設定できます。 たとえば、ユーザーが画面で特定の販売区域を選択して、地域ごとの販売注文を表示できるようにします。 このシナリオをサポートするには、クエリにパラメーターを追加して、クエリに適切な名前 (たとえば、SalesTerritory) を付けます。 フィルターの比較値をパラメーターに設定します。 たとえば、クエリ式は Where TerritoryID = SalesTerritory とすることができます。
ユーザーが実行時にパラメーター値を提供できる画面をデザインできます。 詳細については、「方法: クエリ パラメーターの値を指定する」を参照してください。
拡張 (コードを使用してクエリに)
いくつかの種類のフィルター条件は、クエリ デザイナーではサポートされていません。 デザイナーで制限が発生した場合は、コードを使用して条件をクエリに追加できます。
注意
画面のクエリを拡張することはできません。ソリューション エクスプ ローラーに表示されるクエリのみを拡張できます。画面のクエリを編集することの詳細については、「方法: Silverlight の画面上のデータをフィルター処理する」を参照してください。
次のテーブルでは、クエリ デザイナーを使用して作成できない 2 つのフィルター条件を示しています。
フィルター条件 |
コードを使用する理由 |
---|---|
販売注文の数に基づいて上位 10 人の顧客を返します。 |
販売注文の数を確認するには、Count 操作を使用する必要があります。 クエリ デザイナーでは、Count、Aggregate、および Sum などの操作はサポートされていません。 |
手押し車を購入したすべての顧客を返します。 |
顧客が手押し車を購入したかどうかを確認するには、Product エンティティを参照するフィルター条件を使用する必要があります。 1 人の顧客にいくつもの製品を関連付けることができるため、Product エンティティは Customer-Product リレーションシップの多くの側に存在する可能性があります。 クエリ デザイナーでは、リレーションシップの多の側に移動することはできません。 |
この制限を解決するには、クエリが実行されるときに呼び出されるメソッドにカスタム コードを追加することができます。 詳細については、「方法: コードを使用してクエリを拡張する」を参照してください。
コードで、標準的な LINQ の構文を使用してフィルター条件を定義できます。 クエリが実行されると、デザイナーで定義した条件は、クエリ結果を生成するためにコードで定義した条件に組み合わされます。
コード内で定義する条件は、クエリ デザイナーでフィルター条件として表示されません。 同様に、クエリ デザイナーを使用して追加するフィルター条件は、メソッドでは表示されません。 クエリにパラメーターを追加する場合は、クエリ デザイナーのみを使用します。 クエリ デザイナーを使用して追加したパラメーターは、メソッドのパラメーター リストに表示されます。
クエリを使用する
ビジネス操作の一部として、画面上のクエリを使用またはコードでクエリを実行することができます。
画面でクエリを使用する
カスタム クエリに基づいた画面を作成することができます (たとえば、米国の顧客のリストを示している画面)。 詳細については、「方法: Silverlight の画面を作成する」を参照してください。
画面には、複数のクエリを追加できます。 たとえば、特定の顧客の販売注文の一覧を表示するクエリをデザインできます。 そのクエリを顧客画面に追加できます。 その後、ユーザーが顧客を選択して、関連するすべての販売注文を表示できるようにします。 この方法の詳細については、「方法: クエリ パラメーターの値を指定する」を参照してください。
コードでクエリを使用する
アプリケーションのモデルからクエリを取得し、それらをコードで実行できます。 これにより、アプリケーションのビジネス ロジックで、データのターゲット コレクションを使用することができます。 詳細については、「方法: コードを使用してクエリからデータを取得する」を参照してください。
関連トピック
タイトル |
説明 |
Visual Studio LightSwitch UI のどこにクエリを追加できるか説明します。 |
|
ビジュアル デザイナーを使用して、フィルター条件、パラメーター、およびクエリの並べ替え用語を定義する方法について説明します。 |
|
ユーザーがクエリ パラメーターの値を指定できるようにする方法について説明します。 |
|
デザイナーの機能を上回る方法でクエリを変更する方法を説明します。 |
|
クエリが実行される前後に発生するイベントを処理する方法について説明します。 |
|
コードを使用してクエリを取得して実行する方法について説明します。 |
|
クエリとクエリの要素のプロパティについて説明します。 [プロパティ] ウィンドウで、それらのプロパティの値を設定できます。 |