Gör så här: Anropa kanoniska funktioner
Klassen EntityFunctions innehåller metoder som exponerar kanoniska funktioner som ska användas i LINQ för entitetsfrågor. Information om kanoniska funktioner finns i Kanoniska funktioner.
Kommentar
Metoderna AsUnicode och AsNonUnicode i EntityFunctions klassen har inte kanoniska funktionsekvivalenter.
Kanoniska funktioner som utför en beräkning på en uppsättning värden och returnerar ett enda värde (kallas även aggregerade kanoniska funktioner) kan anropas direkt. Andra kanoniska funktioner kan bara anropas som en del av en LINQ-till-entitetsfråga. Om du vill anropa en aggregeringsfunktion direkt måste du skicka en ObjectQuery<T> till funktionen. Mer information finns i det andra exemplet nedan.
Du kan anropa vissa kanoniska funktioner med hjälp av clr-metoder (common language runtime) i LINQ till entitetsfrågor. En lista över CLR-metoder som mappar till kanoniska funktioner finns i CLR-metoden till kanonisk funktionsmappning.
Exempel 1
I följande exempel används AdventureWorks-försäljningsmodellen. Exemplet kör en LINQ till entitetsfråga som använder DiffDays metoden för att returnera alla produkter för vilka skillnaden mellan SellEndDate
och SellStartDate
är mindre än 365 dagar:
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
Exempel 2
I följande exempel används AdventureWorks-försäljningsmodellen. Exemplet anropar aggregeringsmetoden StandardDeviation direkt för att returnera standardavvikelsen för SalesOrderHeader
delsummor. Observera att en ObjectQuery<T> skickas till funktionen, vilket gör att den kan anropas utan att vara en del av en LINQ-till-entitetsfråga.
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