Konstante Ausdrücke

Ein konstanter Ausdruck besteht aus einem konstanten Wert. Konstantenwerte werden direkt in konstanten Befehlsstrukturausdrücke ohne Übersetzung auf dem Client konvertiert. Dazu gehören Ausdrücke, die zu einem konstanten Wert führen. Daher sollte das Verhalten der Datenquelle für alle Ausdrücke mit Konstanten erwartet werden. Dies kann zu einem Verhalten führen, das sich vom CLR-Verhalten unterscheidet.

Das folgende Beispiel zeigt einen konstanten Ausdruck, der auf dem Server ausgewertet wird.

Decimal totalDue = 200 + 3;
using (AdventureWorksEntities context = new AdventureWorksEntities())
{
    IQueryable<string> salesInfo =
        from s in context.SalesOrderHeaders
        where s.TotalDue >= totalDue
        select s.SalesOrderNumber;

    Console.WriteLine("Sales order numbers:");
    foreach (string orderNum in salesInfo)
    {
        Console.WriteLine(orderNum);
    }
}
Dim totalDue = 200 + 3
Using context As New AdventureWorksEntities()
    Dim salesInfo = _
        From s In context.SalesOrderHeaders _
        Where s.TotalDue >= totalDue _
        Select s.SalesOrderNumber

    Console.WriteLine("Sales order numbers:")
    For Each orderNum As String In salesInfo
        Console.WriteLine(orderNum)
    Next
End Using

LINQ to Entities unterstützt nicht die Verwendung einer Benutzerklasse als Konstante. Ein Eigenschaftsverweis für eine Benutzerklasse wird jedoch als Konstante betrachtet und in einen Konstantenausdruck der Befehlsstruktur konvertiert und für die Datenquelle ausgeführt.

Siehe auch