ObjectQuery<T>.Intersect(ObjectQuery<T>) Method

Определение

Ограничивает результаты запроса, включая только те, которые вошли в результаты другого запроса объектов. Limits the query results by including only the results that exist in another object query.

public System.Data.Objects.ObjectQuery<T> Intersect (System.Data.Objects.ObjectQuery<T> query);
Параметры
query
ObjectQuery<T>

Объект ObjectQuery<T>, представляющий результаты, включаемые в запрос. An ObjectQuery<T> that represents the results to include in the query.

Возвраты

Новый экземпляр ObjectQuery<T>, эквивалентный первоначальному экземпляру с примененным к нему предложением INTERSECT, основанном на указанном элементе query. A new ObjectQuery<T> instance that is equivalent to the original instance with INTERSECT applied based on the specified query.

Исключения

Параметр query имеет значение null или является пустой строкой. The query parameter is null or is an empty string.

Примеры

Пример в этом разделе основан на модели AdventureWorks Sales.The example in this topic is based on the AdventureWorks Sales Model. В данном примере создается новый объект ObjectQuery<T>, содержащий результаты двух других запросов.This example creates a new ObjectQuery<T> object that contains the results of two other queries.

int productID1 = 900;
int productID2 = 950;
using (AdventureWorksEntities context =
    new AdventureWorksEntities())
{
    string queryString = @"SELECT VALUE product 
        FROM AdventureWorksEntities.Products 
        AS product WHERE product.ProductID > @productID1";

    ObjectQuery<Product> productQuery =
        new ObjectQuery<Product>(queryString,
            context, MergeOption.NoTracking);

    string queryString2 = @"SELECT VALUE product 
        FROM AdventureWorksEntities.Products 
        AS product WHERE product.ProductID > @productID2";

    ObjectQuery<Product> productQuery2 =
        new ObjectQuery<Product>(queryString2,
            context, MergeOption.NoTracking);

    ObjectQuery<Product> productQuery3 =
        productQuery.Intersect(productQuery2);

    productQuery3.Parameters.Add(new ObjectParameter("productID1", productID1));
    productQuery3.Parameters.Add(new ObjectParameter("productID2", productID2));

    Console.WriteLine("Result of Intersect");
    Console.WriteLine("------------------");

    // Iterate through the collection of Product items
    // after the Intersect method was called.
    foreach (Product result in productQuery3)
    {
        Console.WriteLine("Product Name: {0}", result.ProductID);
    }
}
Dim productID1 = 900
Dim productID2 = 950

Using context As New AdventureWorksEntities()
    Dim queryString As String = "SELECT VALUE product FROM AdventureWorksEntities.Products " & _
            " AS product WHERE product.ProductID > @productID1"

    Dim productQuery As New ObjectQuery(Of Product)(queryString, context, MergeOption.NoTracking)

    Dim queryString2 As String = "SELECT VALUE product FROM AdventureWorksEntities.Products " & _
        " AS product WHERE product.ProductID > @productID2"

    Dim productQuery2 As New ObjectQuery(Of Product)(queryString2, context, MergeOption.NoTracking)

    Dim productQuery3 As ObjectQuery(Of Product) = productQuery.Intersect(productQuery2)
    productQuery3.Parameters.Add(New ObjectParameter("productID1", productID1))
    productQuery3.Parameters.Add(New ObjectParameter("productID2", productID2))

    Console.WriteLine("Result of Intersect")
    Console.WriteLine("------------------")

    ' Iterate through the collection of Product items 
    ' after the Intersect method was called. 
    For Each result As Product In productQuery3
        Console.WriteLine("Product Name: {0}", result.ProductID)
    Next
End Using

Комментарии

Предоставленный query , определяющий результаты, которые нужно включить, должен быть того же типа или типа, который совместим с ObjectQuery<T>.The supplied query that defines results to include must be of the same type or of a type that is compatible with the ObjectQuery<T>.

Параметры, определенные в предоставленном query объединяются с параметрами, которые определены в ObjectQuery<T> экземпляра.Parameters that are defined in the supplied query are merged with parameters that are defined in the ObjectQuery<T> instance. Параметры должны быть уникальными в объединенной коллекции ObjectParameterCollection.Parameters must be unique in the combined ObjectParameterCollection. В объединенной коллекции не могут находиться два параметра, имеющие одинаковое имя.There cannot be two parameters in the combined collection with the same name. Дополнительные сведения см. в разделе методы построителя запросов.For more information, see Query Builder Methods.

Результирующий запрос наследует соединение от экземпляра ObjectQuery<T>, для которого вызывался метод Intersect.The resulting query inherits the connection from the ObjectQuery<T> instance on which the Intersect method was called.

Применяется к