Como: Funções canônicas de chamada
A classe de EntityFunctions contém os métodos que expõe funções canônicas para usar em consultas LINQ to Entities. Para obter informações sobre funções canônicas, consulte Funções canônicas.
Observação
Os métodos de AsUnicode e de AsNonUnicode na classe de EntityFunctions não têm equivalentes canônicos de função.
As funções canônicas que executar um cálculo em um conjunto de valores e retornar um valor único (também conhecido como funções agregadas canônicas) podem ser chamadas diretamente. Outras funções canônicas só podem ser chamados como parte de uma consulta LINQ to Entities. Para chamar diretamente uma função agregada, você deve passar ObjectQuery<T> à função. Para obter mais informações, consulte o segundo exemplo abaixo.
Você pode chamar algumas funções canônicas usando métodos do Common Language Runtime (CLR) em consultas LINQ to Entities. Para obter uma lista de métodos CLR que são mapeados para funções canônicas, consulte Método CLR para o mapeamento de funções canônicas.
Exemplo 1
O exemplo a seguir usa o Modelo de Vendas do AdventureWorks. O exemplo executa uma consulta LINQ to entidades que usa o método de DiffDays para retornar todos os produtos para que a diferença entre SellEndDate
e SellStartDate
é menor que 365 dias:
using (AdventureWorksEntities AWEntities = new AdventureWorksEntities())
{
var products = from p in AWEntities.Products
where EntityFunctions.DiffDays(p.SellEndDate, p.SellStartDate) < 365
select p;
foreach (var product in products)
{
Console.WriteLine(product.ProductID);
}
}
Using AWEntities As New AdventureWorksEntities()
Dim products = From p In AWEntities.Products _
Where EntityFunctions.DiffDays(p.SellEndDate, p.SellStartDate) < 365 _
Select p
For Each product In products
Console.WriteLine(product.ProductID)
Next
End Using
Exemplo 2
O exemplo a seguir usa o Modelo de Vendas do AdventureWorks. O exemplo chama o método agregado de StandardDeviation diretamente para retornar o desvio padrão de subtotais de SalesOrderHeader
. Observe que ObjectQuery<T> é passado para a função, que permite que é chamado sem ser parte de uma consulta LINQ to Entities.
using (AdventureWorksEntities AWEntities = new AdventureWorksEntities())
{
double? stdDev = EntityFunctions.StandardDeviation(
from o in AWEntities.SalesOrderHeaders
select o.SubTotal);
Console.WriteLine(stdDev);
}
Using AWEntities As New AdventureWorksEntities()
Dim stdDev As Double? = EntityFunctions.StandardDeviation( _
From o In AWEntities.SalesOrderHeaders _
Select o.SubTotal)
Console.WriteLine(stdDev)
End Using