Procedure: Canonical Functions aanroepen
De EntityFunctions klasse bevat methoden waarmee canonieke functies kunnen worden gebruikt in LINQ-query's voor entiteiten. Zie Canonical Functions voor informatie over canonieke functies.
Notitie
De AsUnicode en AsNonUnicode methoden in de EntityFunctions klasse hebben geen canonieke functie-equivalenten.
Canonieke functies die een berekening uitvoeren op een set waarden en één waarde retourneren (ook wel statistische canonieke functies genoemd) kunnen rechtstreeks worden aangeroepen. Andere canonieke functies kunnen alleen worden aangeroepen als onderdeel van een LINQ naar entiteiten-query. Als u een statistische functie rechtstreeks wilt aanroepen, moet u een ObjectQuery<T> functie doorgeven aan de functie. Zie het tweede voorbeeld hieronder voor meer informatie.
U kunt enkele canonieke functies aanroepen met behulp van CLR-methoden (Common Language Runtime) in LINQ naar entiteitenquery's. Zie CLR Method to Canonical Function Mapping voor een lijst met CLR-methoden die zijn toegewezen aan canonieke functies.
Voorbeeld 1
In het volgende voorbeeld wordt het AdventureWorks Sales Model gebruikt. In het voorbeeld wordt een LINQ uitgevoerd op entiteitenquery die gebruikmaakt van de DiffDays methode om alle producten te retourneren waarvoor het verschil tussen SellEndDate
en SellStartDate
minder dan 365 dagen is:
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
Voorbeeld 2
In het volgende voorbeeld wordt het AdventureWorks Sales Model gebruikt. In het voorbeeld wordt de statistische StandardDeviation methode rechtstreeks aangeroepen om de standaarddeviatie van SalesOrderHeader
subtotalen te retourneren. Houd er rekening mee dat een ObjectQuery<T> functie wordt doorgegeven aan de functie, zodat deze kan worden aangeroepen zonder deel uit te maken van een LINQ naar entiteitenquery.
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