Freigeben über


Vorgehensweise: Aufrufen kanonischer Funktionen

Die EntityFunctions-Klasse enthält Methoden, mit denen kanonische Funktionen in LINQ to Entities-Abfragen verwendet werden können. Weitere Informationen zur kanonischen Funktionen finden Sie unter Kanonische Funktionen.

Hinweis

Die Methoden AsUnicode und AsNonUnicode der EntityFunctions-Klasse verfügen über keine kanonischen Funktionsentsprechungen.

Kanonische Funktionen, die eine Berechnung für einen Satz von Werten ausführen und einen einzelnen Wert (auch bekannt als aggregierte kanonische Funktionen) zurückgeben, können direkt aufgerufen werden. Andere kanonische Funktionen können nur als Teil einer LINQ to Entities-Abfrage aufgerufen werden. Zum direkten Aufrufen einer Aggregatfunktion muss eine ObjectQuery<T> an die Funktion übergeben werden. Weitere Informationen finden Sie unten im zweiten Beispiel.

Sie können einige kanonische Funktionen mit Common Language Runtime (CLR)-Methoden in LINQ to Entities-Abfragen aufrufen. Eine Liste der CLR-Methoden, die kanonischen Funktionen entsprechen, finden Sie unter Zuordnung von CLR-Methode zu kanonischer Funktion.

Beispiel 1

Im folgenden Beispiel wird das AdventureWorks Sales-Modell verwendet. Im Beispiel wird eine die DiffDays-Methode verwendende LINQ to Entities-Abfrage zum Zurückgeben aller Produkte ausgeführt, für die die Differenz zwischen SellEndDate und SellStartDate weniger als 365 Tage beträgt:

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

Beispiel 2

Im folgenden Beispiel wird das AdventureWorks Sales-Modell verwendet. Im Beispiel wird die StandardDeviation-Aggregatmethode aufgerufen, um die Standardabweichung von SalesOrderHeader-Teilergebnissen direkt zurückzugeben. Eine ObjectQuery<T> wird an die Funktion übergeben, durch die sie aufgerufen werden kann, ohne Teil einer LINQ to Entities-Abfrage sein zu müssen.

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

Siehe auch