Freigeben über


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

Definition

Kombiniert die Ergebnisse der Abfrage mit den Ergebnissen einer anderen Objektabfrage, einschließlich aller Duplikate.

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)

Parameter

query
ObjectQuery<T>

Ein ObjectQuery<T> Wert, der die hinzuzufügenden Ergebnisse darstellt.

Gibt zurück

Eine neue ObjectQuery<T> Instanz, die der ursprünglichen Instanz entspricht, auf die UNION ALL angewendet wurde, um die Ergebnisse des angegebenen Elements queryhinzuzufügen.

Ausnahmen

Der query Parameter ist null.

Beispiele

In diesem Beispiel wird die UnionAll Methode verwendet, um ein neues ObjectQuery<T> Objekt zu erstellen. Anschließend wird die Distinct Methode für das neue ObjectQuery<T> Objekt aufgerufen, um die eindeutigen Ergebnisse dieser Abfrage abzurufen.

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);
}

Hinweise

UnionAll addiert die Ergebnisse der bereitgestellten query einschließlich aller Duplikate.

Die bereitgestellte, query die hinzuzufügende Ergebnisse definiert, muss denselben Typ oder einen Typ aufweisen, der auf den Typ dieses Werts ObjectQuery<T>heraufgestuft werden kann. Beispielsweise ist Folgendes gültig, da DiscontinuedProducts höhergestuft werden kann:Products

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

Im Folgenden wird eine Ausnahme ausgelöst, da Products sie nicht höhergestuft DiscontinuedProductswerden kann.

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

Für einen ObjectQuery<T> Typ DbDataRecordmüssen die Datensätze in beiden Abfragen dieselbe Anzahl von Spalten aufweisen, und die Typen in den Spalten der DbDataRecord übergebenen query Daten müssen für die Spaltentypen der DbDataRecord übergebenen ObjectQuery<T>Elemente verfügbar sein.

Parameter, die in der angegebenen query Datei definiert sind, werden mit Parametern zusammengeführt, die in der ObjectQuery<T> Instanz definiert sind. Parameter müssen in kombinationen ObjectParameterCollectioneindeutig sein. Es können nicht zwei Parameter in der kombinierten Auflistung mit demselben Namen vorhanden sein. Weitere Informationen finden Sie unter Abfrage-Generator-Methoden.

Die resultierende Abfrage erbt die Verbindung von der Instanz, für die ObjectQuery<T>UnionAll aufgerufen wurde.

Gilt für:

Weitere Informationen