Comparteix a través de


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

Definición

Combina los resultados de la consulta con los resultados de otra consulta de objeto, incluyendo todos los duplicados.

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)

Parámetros

query
ObjectQuery<T>

ObjectQuery<T> que representa los resultados que se van a agregar.

Devoluciones

Nueva instancia de ObjectQuery<T> que es equivalente a la instancia original, pero aplicando UNION ALL para agregar los resultados de la query especificada.

Excepciones

El parámetro query es null.

Ejemplos

En este ejemplo se usa el UnionAll método para crear un nuevo ObjectQuery<T> objeto. A continuación, se llama al método Distinct en el nuevo objeto ObjectQuery<T> para obtener los resultados únicos de esta consulta.

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

Comentarios

UnionAll agrega los resultados del proporcionado query , incluidos todos los duplicados.

El proporcionado query que define los resultados que se van a agregar debe ser del mismo tipo o de un tipo que se puede promover al tipo de este ObjectQuery<T>. Por ejemplo, lo siguiente es válido porque DiscontinuedProducts se puede promover a Products:

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

A continuación se produce una excepción porque Products no se puede promover a DiscontinuedProducts.

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

Para un ObjectQuery<T> de tipo DbDataRecord, los registros de ambas consultas deben tener el mismo número de columnas y los tipos de las columnas del DbDataRecord objeto query pasado deben ser promotables a los tipos de las columnas de DbDataRecord de .ObjectQuery<T>

Los parámetros definidos en el proporcionado query se combinan con parámetros definidos en la ObjectQuery<T> instancia de . Los parámetros deben ser únicos en la ObjectParameterCollection combinada. No puede haber dos parámetros en la colección combinada con el mismo nombre. Para obtener más información, vea Métodos del Generador de consultas.

La consulta resultante hereda la conexión de la instancia de ObjectQuery<T> en la que se llamó a UnionAll.

Se aplica a

Consulte también