ObjectQuery<T>.Except(ObjectQuery<T>) メソッド


別のオブジェクト クエリの結果を基に一部の結果を除外することで、クエリの結果を制限します。Limits the query results by excluding results based on the results of another object query.

 System::Data::Objects::ObjectQuery<T> ^ Except(System::Data::Objects::ObjectQuery<T> ^ query);
public System.Data.Objects.ObjectQuery<T> Except (System.Data.Objects.ObjectQuery<T> query);
member this.Except : System.Data.Objects.ObjectQuery<'T> -> System.Data.Objects.ObjectQuery<'T>
Public Function Except (query As ObjectQuery(Of T)) As ObjectQuery(Of T)



クエリから除外する結果を表す ObjectQuery<T>An ObjectQuery<T> that represents the results to exclude from the query.


指定された query に基づいて EXCEPT が適用された元のインスタンスに相当する、新しい ObjectQuery<T> インスタンス。A new ObjectQuery<T> instance that is equivalent to the original instance with EXCEPT applied based on the specified query.


query パラメーターが null または空の文字列です。The query parameter is null or an empty string.

この例は、 AdventureWorks Sales Modelに基づいています。This example is based on the AdventureWorks Sales Model. この例では、Except メソッドを使用して新しい ObjectQuery<T> オブジェクトを作成し、新しいクエリの結果を反復処理します。The example uses Except method to create a new ObjectQuery<T> object and then iterates through the result of the new query.

int productID = 900;
using (AdventureWorksEntities context =
    new AdventureWorksEntities())
    string queryString = @"SELECT VALUE product 
        FROM AdventureWorksEntities.Products AS product";

    ObjectQuery<Product> productQuery =
        new ObjectQuery<Product>(queryString,
            context, MergeOption.NoTracking);

    string queryString2 = @"SELECT VALUE product 
        FROM AdventureWorksEntities.Products 
        AS product WHERE product.ProductID < @productID";

    ObjectQuery<Product> productQuery2 =
        new ObjectQuery<Product>(queryString2,
            context, MergeOption.NoTracking);

    productQuery2.Parameters.Add(new ObjectParameter("productID", productID));

    ObjectQuery<Product> productQuery3 =

    Console.WriteLine("Result of Except");

    // Iterate through the collection of Product items
    // after the Except method was called.
    foreach (Product result in productQuery3)
        Console.WriteLine("Product Name: {0}",
Dim productID = 900
Using context As New AdventureWorksEntities()
    Dim queryString As String = "SELECT VALUE product FROM AdventureWorksEntities.Products AS product"
    Dim productQuery As New ObjectQuery(Of Product)(queryString, context, MergeOption.NoTracking)

    Dim queryString2 As String = "SELECT VALUE product FROM AdventureWorksEntities.Products " & _
        " AS product WHERE product.ProductID < @productID"
    Dim productQuery2 As New ObjectQuery(Of Product)(queryString2, context, MergeOption.NoTracking)
    productQuery2.Parameters.Add(New ObjectParameter("productID", productID))

    Dim productQuery3 As ObjectQuery(Of Product) = productQuery.Except(productQuery2)

    Console.WriteLine("Result of Except")

    ' Iterate through the collection of Product items 
    ' after the Except method was called. 
    For Each result As Product In productQuery3
        Console.WriteLine("Product Name: {0}", result.ProductID)
End Using


除外するquery結果を定義する指定されたは、 ObjectQuery<T>と互換性のある型または型である必要があります。The supplied query that defines results to exclude must be of the same type or of a type that is compatible with the ObjectQuery<T>.

指定queryされたで定義されているパラメーターは、 ObjectQuery<T>インスタンスで定義されているパラメーターとマージされます。Parameters that are defined in the supplied query are merged with parameters that are defined in the ObjectQuery<T> instance. パラメーターは、結合された ObjectParameterCollection 内で一意である必要があります。Parameters must be unique in the combined ObjectParameterCollection. 結合されたコレクション内に同じ名前のパラメーターが 2 つ存在することはできません。There cannot be two parameters in the combined collection with the same name. 詳細については、「クエリビルダーメソッド」を参照してください。For more information, see Query Builder Methods.

結果のクエリは、ObjectQuery<T> が呼び出された Except インスタンスから接続を継承します。The resulting query inherits the connection from the ObjectQuery<T> instance on which Except was called.