Vorgehensweise: Inline-Aufrufen von benutzerdefinierten Funktionen
Obwohl Sie benutzerdefinierte Funktionen inline aufrufen können, werden in einer Abfrage enthaltene Funktionen, deren Ausführung umgeleitet wird, bis zur Ausführung der Abfrage verzögert. Weitere Informationen finden Sie unter Introduction to LINQ queries (C#) (Einführung in LINQ-Abfragen (C#)).
Wenn Sie die gleiche Funktion außerhalb einer Abfrage ausführen, erstellt LINQ to SQL eine einfache Abfrage aus dem Ausdruck des Methodenaufrufs. Folgendes befindet sich in der SQL-Syntax (der @p0
-Parameter ist an die übergebene Konstante gebunden):
SELECT dbo.ReverseCustName(@p0)
LINQ to SQL erstellt Folgendes:
string str = db.ReverseCustName("LINQ to SQL");
Dim str As String = db.ReverseCustName("LINQ to SQL")
Beispiel
In der folgenden LINQ to SQL-Abfrage sehen Sie einen Inline-Abruf für die benutzerdefinierte ReverseCustName
-Funktionsmethode. Die Funktion wird nicht sofort ausgeführt, da die Abfrageausführung verzögert wird. Die für diese Abfrage erstellte SQL-Anweisung wird in einen Aufruf der benutzerdefinierten Funktion in der Datenbank übersetzt (siehe SQL-Code nach der Abfrage).
var custQuery =
from cust in db.Customers
select new {cust.ContactName, Title =
db.ReverseCustName(cust.ContactTitle)};
Dim custQuery = _
From cust In db.Customers _
Select cust.ContactName, Title = _
db.ReverseCustName(cust.ContactTitle)
SELECT [t0].[ContactName],
dbo.ReverseCustName([t0].[ContactTitle]) AS [Title]
FROM [Customers] AS [t0]