Share via


How to: Call User-Defined Functions Inline (LINQ to SQL)

Although you can call user-defined functions inline, functions that are included in a query whose execution is deferred are not executed until the query is executed. For more information, see Introduction to LINQ Queries (C#).

When you call the same function outside a query, LINQ to SQL creates a simple query from the method call expression. The following is the SQL syntax (the parameter @p0 is bound to the constant passed in):

SELECT dbo.ReverseCustName(@p0)

LINQ to SQL creates the following:

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

Example

In the following LINQ to SQL query, you can see an inline call to the generated user-defined function method ReverseCustName. The function is not executed immediately because query execution is deferred. The SQL built for this query translates to a call to the user-defined function in the database (see the SQL code following the query).

Dim custQuery = _
    From cust In db.Customers _
    Select cust.ContactName, Title = _
    db.ReverseCustName(cust.ContactTitle)
var custQuery =
    from cust in db.Customers
    select new {cust.ContactName, Title = 
        db.ReverseCustName(cust.ContactTitle)};
SELECT [t0].[ContactName],
    dbo.ReverseCustName([t0].[ContactTitle]) AS [Title]
FROM [Customers] AS [t0]

See Also

Other Resources

User-Defined Functions (LINQ to SQL)