Condividi tramite


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

Definizione

Combina i risultati della query con i risultati di un'altra query di oggetto inclusi tutti i duplicati.

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)

Parametri

query
ObjectQuery<T>

Oggetto ObjectQuery<T> che rappresenta i risultati da aggiungere.

Restituisce

Nuova istanza di ObjectQuery<T> equivalente all'istanza originale con l'operatore UNION ALL applicato per aggiungere i risultati del parametro query specificato.

Eccezioni

Il valore del parametro query è null.

Esempio

In questo esempio viene utilizzato il UnionAll metodo per creare un nuovo ObjectQuery<T> oggetto . Viene quindi chiamato il metodo Distinct sul nuovo oggetto ObjectQuery<T> per ottenere i risultati univoci di questa query.

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

Commenti

UnionAll aggiunge i risultati dell'oggetto query fornito, inclusi tutti i duplicati.

L'oggetto fornito query che definisce i risultati da aggiungere deve essere dello stesso tipo o di un tipo che può essere promosso al tipo di .ObjectQuery<T> Ad esempio, il codice seguente è valido perché DiscontinuedProducts può essere promosso a Products:

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

Di seguito viene generata un'eccezione perché Products non può essere alzata di livello a DiscontinuedProducts.

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

Per un ObjectQuery<T> di tipo DbDataRecord, i record in entrambe le query devono avere lo stesso numero di colonne e i tipi nelle colonne dell'oggetto DbDataRecord passato query devono essere promuovibili ai tipi delle colonne nell'oggetto DbDataRecordObjectQuery<T>di .

I parametri definiti nell'oggetto fornito query vengono uniti ai parametri definiti nell'istanza ObjectQuery<T> di . I parametri devono essere univoci nell'oggetto ObjectParameterCollection combinato. Nella raccolta combinata non possono essere presenti due parametri con lo stesso nome. Per altre informazioni, vedere Metodi del generatore di query.

La query risultante eredita la connessione dall'istanza di ObjectQuery<T> su cui è stato chiamato il metodo UnionAll.

Si applica a

Vedi anche