Procedura: chiamare funzioni definite dall'utente inline

Anche se è possibile chiamare le funzioni inline definite dall'utente, le funzioni incluse in una query la cui esecuzione è rinviata non vengono eseguite finche non verrà eseguita la query. Per altre informazioni, vedere Introduzione alle query LINQ (C#).

Quando si chiama la stessa funzione al di fuori di una query, LINQ to SQL crea una semplice query dall'espressione della chiamata al metodo. Di seguito è riportata la sintassi SQL, in cui il parametro @p0 è associato alla costante passata:

SELECT dbo.ReverseCustName(@p0)  

LINQ to SQL crea quanto segue:

string str = db.ReverseCustName("LINQ to SQL");
Dim str As String = db.ReverseCustName("LINQ to SQL")

Esempio

Nella query di LINQ to SQL seguente, è possibile visualizzare una chiamata inline al metodo generato della funzione definita dall'utente ReverseCustName. La funzione non viene eseguita immediatamente poiché l'esecuzione della query è rinviata. Il codice SQL compilato per questa query viene convertito in una chiamata alla funzione definita dall'utente nel database. Vedere il codice SQL che segue la query.

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]  

Vedi anche