Share via


Gewusst wie: Aufrufen von kanonischen Funktionen (LINQ to Entities)

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

Dd456873.note(de-de,VS.100).gifHinweis:
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 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 zugeordnet sind, finden Sie unter Mapping von CLR-Methoden zu kanonischen Funktionen.

Beispiel

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 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
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);
    }
}

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 wird an die Funktion übergeben, durch die sie aufgerufen werden kann, ohne Teil einer LINQ to Entities-Abfrage sein zu müssen.

Using AWEntities As New AdventureWorksEntities()
    Dim stdDev As Double? = EntityFunctions.StandardDeviation( _
        From o In AWEntities.SalesOrderHeaders _
        Select o.SubTotal)

    Console.WriteLine(stdDev)
End Using
using (AdventureWorksEntities AWEntities = new AdventureWorksEntities())
{
    double? stdDev = EntityFunctions.StandardDeviation(
        from o in AWEntities.SalesOrderHeaders
        select o.SubTotal);

    Console.WriteLine(stdDev);
}

Siehe auch

Konzepte

Aufrufen von Funktionen in LINQ to Entities-Abfragen
Abfragen in LINQ to Entities