ObjectQuery<T>.UnionAll(ObjectQuery<T>) Methode

Definitie

Combineert de resultaten van de query met de resultaten van een andere objectquery, inclusief alle duplicaten.

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

Parameters

query
ObjectQuery<T>

Een ObjectQuery<T> die de resultaten vertegenwoordigt die moeten worden toegevoegd.

Retouren

Een nieuw ObjectQuery<T> exemplaar dat gelijk is aan het oorspronkelijke exemplaar waarop UNION ALL is toegepast om de resultaten van de opgegeven querytoe te voegen.

Uitzonderingen

De query parameter is null.

Voorbeelden

In dit voorbeeld wordt de UnionAll methode gebruikt om een nieuw ObjectQuery<T> object te maken. Vervolgens wordt de Distinct methode voor het nieuwe ObjectQuery<T> object aangeroepen om de unieke resultaten van deze query op te halen.

int productID = 100;
using (AdventureWorksEntities context =
    new AdventureWorksEntities())
{
    string queryString =
        @"SELECT VALUE product FROM AdventureWorksEntities.Products
            AS product WHERE product.ProductID < @productID";

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

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

    ObjectQuery<Product> productQuery3 =
        productQuery.UnionAll(productQuery2);

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

    Console.WriteLine("Result of UnionAll");
    Console.WriteLine("------------------");

    // Iterate through the collection of Product items,
    // after the UnionAll method was called on two queries.
    foreach (Product result in productQuery3)
    {
        Console.WriteLine("Product Name: {0}", result.ProductID);
    }
    ObjectQuery<Product> productQuery4 = productQuery3.Distinct();

    Console.WriteLine("\nResult of Distinct");
    Console.WriteLine("------------------");

    // Iterate through the collection of Product items.
    // after the Distinct method was called on a query.
    foreach (Product result in productQuery4)
        Console.WriteLine("Product Name: {0}", result.ProductID);
}

Opmerkingen

UnionAll voegt de resultaten van de opgegeven query inclusief alle duplicaten toe.

De opgegeven query die resultaten definieert die moeten worden toegevoegd, moeten van hetzelfde type zijn of van een type dat kan worden gepromoveerd tot het type van dit ObjectQuery<T>type. Het volgende is bijvoorbeeld geldig omdat DiscontinuedProducts kan worden gepromoveerd naar Products:

ObjectQuery<Product>.Union(ObjectQuery<DiscontinuedProduct>)

Het volgende genereert een uitzondering omdat Products deze niet kan worden gepromoveerd naar DiscontinuedProducts.

ObjectQuery <DiscontinuedProduct>.Union(ObjectQuery<Product>)

Voor een ObjectQuery<T> van het type DbDataRecordmoeten de records in beide query's hetzelfde aantal kolommen hebben en moeten de typen in de kolommen van de DbDataRecord doorgegeven query kolommen promotabel zijn voor de typen kolommen in de kolommen in de DbDataRecordObjectQuery<T>.

Parameters die zijn gedefinieerd in de opgegeven query , worden samengevoegd met parameters die in het ObjectQuery<T> exemplaar zijn gedefinieerd. Parameters moeten uniek zijn in de gecombineerde ObjectParameterCollection. Er kunnen geen twee parameters in de gecombineerde verzameling met dezelfde naam zijn. Zie Methoden voor opbouwfunctie voor query's voor meer informatie.

De resulterende query neemt de verbinding over van het ObjectQuery<T> exemplaar waarop UnionAll is aangeroepen.

Van toepassing op

Zie ook