ObjectQuery<T>.Distinct Método
Definição
Limita a consulta a resultados únicos.Limits the query to unique results.
public:
System::Data::Objects::ObjectQuery<T> ^ Distinct();
public System.Data.Objects.ObjectQuery<T> Distinct ();
member this.Distinct : unit -> System.Data.Objects.ObjectQuery<'T>
Public Function Distinct () As ObjectQuery(Of T)
Retornos
Uma nova instância do ObjectQuery<T> equivalente à instância original com SELECT DISTINCT aplicado.A new ObjectQuery<T> instance that is equivalent to the original instance with SELECT DISTINCT applied.
Exemplos
O exemplo neste tópico é baseado no Microsoft SQL Server exemplos de produto: banco de dados.The example in this topic is based on the Microsoft SQL Server Product Samples: Database. O exemplo usa o UnionAll método para criar um novo ObjectQuery<T> objeto.The example uses UnionAll method to create a new ObjectQuery<T> object. Em seguida, ele chama Distinct o novo ObjectQuery<T> objeto para obter os resultados exclusivos dessa consulta.Then it calls Distinct on the new ObjectQuery<T> object to get the unique results of this 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);
}
Dim productID = 100
Using context As New AdventureWorksEntities()
Dim queryString As String = "SELECT VALUE product FROM AdventureWorksEntities.Products " & _
" AS product WHERE product.ProductID < @productID"
Dim productQuery As New ObjectQuery(Of Product)(queryString, context, MergeOption.NoTracking)
Dim productQuery2 As New ObjectQuery(Of Product)(queryString, context, MergeOption.NoTracking)
Dim productQuery3 As ObjectQuery(Of Product) = 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.
For Each result As Product In productQuery3
Console.WriteLine("Product Name: {0}", result.ProductID)
Next
Dim productQuery4 As ObjectQuery(Of Product) = productQuery3.Distinct()
Console.WriteLine(vbLf & "Result of Distinct")
Console.WriteLine("------------------")
' Iterate through the collection of Product items.
' after the Distinct method was called on a query.
For Each result As Product In productQuery4
Console.WriteLine("Product Name: {0}", result.ProductID)
Next
End Using
Comentários
Esse método do construtor de consultas retorna uma ObjectQuery<T> instância equivalente à consulta original com a seleção de Distinct aplicada.This query builder method returns an ObjectQuery<T> instance that is equivalent to the original query with SELECT DISTINCT applied.
O DISTINCT operador não pode ser aplicado a um objeto que inclui um mapeamento para uma coluna não comparável na fonte de dados (como ntext).The DISTINCT operator cannot be applied to an object that includes a mapping to a non-comparable column in the data source (such as ntext).