Partager via


ObjectQuery<T>.UnionAll(ObjectQuery<T>) Méthode

Définition

Combine les résultats de la requête avec les résultats d'une autre requête d'objet, y compris tous les doublons.

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)

Paramètres

query
ObjectQuery<T>

ObjectQuery<T> qui représente les résultats à ajouter.

Retours

Nouvelle instance ObjectQuery<T> qui est équivalente à l’instance d’origine avec UNION ALL appliqué pour ajouter les résultats de query spécifié.

Exceptions

Le paramètre query a la valeur null.

Exemples

Cet exemple utilise la UnionAll méthode pour créer un objet ObjectQuery<T> . Ensuite, il appelle la méthode Distinct sur le nouvel objet ObjectQuery<T> afin d'obtenir les résultats uniques de cette requête.

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

Remarques

UnionAll ajoute les résultats du fourni, query y compris tous les doublons.

Le fourni query qui définit les résultats à ajouter doit être du même type ou d’un type qui peut être promu au type de ce ObjectQuery<T>. Par exemple, les éléments suivants sont valides, car DiscontinuedProducts peuvent être promus en Products:

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

L’élément suivant lève une exception, car Products ne peut pas être promu en DiscontinuedProducts.

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

Pour un ObjectQuery<T> de type DbDataRecord, les enregistrements dans les deux requêtes doivent avoir le même nombre de colonnes, et les types dans les colonnes du DbDataRecord du passé query doivent être promotables aux types des colonnes dans le DbDataRecord de .ObjectQuery<T>

Les paramètres définis dans le fourni query sont fusionnés avec les paramètres définis dans l’instance ObjectQuery<T> . Les paramètres doivent être uniques dans l'objet ObjectParameterCollection combiné. La collection combinée ne peut pas contenir deux paramètres du même nom. Pour plus d’informations, consultez Méthodes du Générateur de requêtes.

La requête résultante hérite de la connexion de l'instance ObjectQuery<T> sur laquelle la méthode UnionAll a été appelée.

S’applique à

Voir aussi