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>

Eine ObjectQuery<T>, die die hinzuzufügenden Ergebnisse darstellt.

Gibt zurück

Eine neue ObjectQuery<T>-Instanz, die der ursprünglichen Instanz entspricht, für die jedoch UNION ALL festgelegt ist, um die Ergebnisse der angegebenen query hinzuzufü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 fügt die Ergebnisse der angegebenen query hinzu, einschließlich aller Duplikate.

Die angegebene query , die hinzuzufügende Ergebnisse definiert, muss vom gleichen Typ sein oder von einem Typ sein, der zum Typ dieses ObjectQuery<T>höher gestuft werden kann. Beispielsweise ist Folgendes gültig, da DiscontinuedProducts zu Productsheraufgestuft werden kann:

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

Im Folgenden wird eine Ausnahme ausgelöst, da Products nicht zu DiscontinuedProductsheraufgestuft werden kann.

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

Für ein ObjectQuery<T> vom Typ DbDataRecordmüssen die Datensätze in beiden Abfragen die gleiche Anzahl von Spalten aufweisen, und die Typen in den Spalten des DbDataRecord übergebenen query müssen auf die Typen der Spalten in der DbDataRecordObjectQuery<T>der heraufstufbar sein.

Parameter, die in der angegebenen query definiert sind, werden mit Parametern zusammengeführt, die in der ObjectQuery<T> -Instanz definiert sind. Parameter müssen in der kombinierten ObjectParameterCollection eindeutig sein. In der kombinierten Auflistung dürfen sich nicht zwei Parameter mit demselben Namen befinden. Weitere Informationen finden Sie unter Abfrage-Generator-Methoden.

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

Gilt für:

Weitere Informationen