次の方法で共有


方法: コードを使用してクエリからデータを取得する

モデルからクエリを取得し、それらをコードで実行できます。これにより、アプリケーションのビジネス ロジックで、データのターゲット コレクションを使用することができます。

たとえば、モデルに、Products in Stock という名前のクエリが含まれる場合があります。製品が入手可能であるかを確認するには、Products in Stock クエリを取得する検証コードを記述して、そのクエリを実行します。クエリを実行した後、コードは、結果のコレクションを反復処理できます。このコレクションの製品が、現在の販売注文の製品と一致する場合、ユーザーは、遅延について顧客に通知できます。

where 句を使用して、クエリの結果を絞り込むためのコードを追加することもできます。Where 句を使用してクエリの結果を絞り込むと、Where 句の条件がサーバー層に適用されるために、パフォーマンスが向上する場合があります。詳細については、「クエリ: データ ソースからの情報の取得」を参照してください。

例: クエリからのデータの取得と、結果での反復処理

ユーザーが販売注文に新しい行を追加すると、次のヘルパー メソッドが呼び出されます。Order_Details という名前のエンティティがある場合は、このメソッドを Order_Details_Inserting メソッドから呼び出すことができます。

このコードでは、TopNSalesOrders という名前のクエリを実行し、販売注文に基づいて上位 10 件の顧客を取得します。この注文を発注した顧客の ID が、クエリが返す顧客の ID のいずれかと一致する場合は、10% の割引が行項目に適用されます。

Private Sub Good_Customer_Discount(ByVal entity As Order_Detail)
    For Each cust As Customer In _
        Me.DataWorkspace.NorthwindData.TopNSalesOrders(10)
        If cust.CustomerID = entity.Order.Customer.CustomerID Then
            entity.Discount = 0.1
        End If
    Next

End Sub
private void Good_Customer_Discount(Order_Detail entity)
{
    foreach (Customer cust in this.DataWorkspace.NorthwindData.
 TopNSalesOrders(10))
    {
        if (cust.CustomerID == entity.Order.Customer.CustomerID)
        {
            entity.Discount = 0.1F;
        }
    }
}

例: Where 句を適用した、クエリ結果の絞り込み

次のコードは、前のコード例の代わりとして使用できます。このコードで、Where 句が TopNSalesOrders クエリに適用され、顧客が現在の注文を発注している場合にのみ、顧客が返されます。

Private Sub Good_Customer_Discount2(ByVal entity As Order_Detail)
    Dim query As IDataServiceQueryable(Of Customer)
    query = From mycustomer In Me.DataWorkspace.NorthwindData.TopNSalesOrders(10)
            Where mycustomer.CustomerID = entity.Order.Customer.CustomerID
            Select mycustomer

    If Not IsNothing(query.SingleOrDefault) Then
        entity.Discount = 0.01
    End If

End Sub
private void Good_Customer_Discount2(Order_Detail entity)
{
    IDataServiceQueryable<Customer> query;

    query = from myCustomer in this.DataWorkspace.NorthwindData.
                TopNSalesOrders(10)
            where myCustomer.CustomerID == entity.Order.Customer.CustomerID
            select myCustomer;

    if (query.SingleOrDefault() != null)
    {
        entity.Discount = 0.1F;
    }
}
}

次の手順

デザイナーを使用してクエリを視覚的にデザインする方法については、「方法: クエリ デザイナーを使用してクエリをデザインする」を参照してください。

コードを使用してモデルでクエリを拡張する方法については、「方法: コードを使用してクエリを拡張する」を参照してください。

参照

処理手順

方法: クエリを追加、削除、変更する

チュートリアル: 画面のデザイン

方法: クエリ デザイナーを使用してクエリをデザインする

方法: コードを使用してクエリを拡張する

その他の技術情報

クエリ: データ ソースからの情報の取得