如何:以内联方式调用用户定义的函数
尽管您可以内联调用用户定义的函数,但延迟执行的查询中包含的函数直到此查询执行时才会执行。 有关详细信息,请参阅 LINQ 查询简介 (C#)。
当你在查询外部调用同一函数时,LINQ to SQL 会根据方法调用表达式创建一个简单查询。 下面是相应的 SQL 语法(@p0
参数绑定到传入的常量):
SELECT dbo.ReverseCustName(@p0)
LINQ to SQL 创建以下内容:
string str = db.ReverseCustName("LINQ to SQL");
Dim str As String = db.ReverseCustName("LINQ to SQL")
示例
在下面的 LINQ to SQL 查询中,你可以看到对生成的用户定义函数方法ReverseCustName
的内联调用。 此函数不会立即执行,这是因为查询会延迟执行。 为此查询生成的 SQL 会转换成对数据库中用户定义函数的调用(请参见此查询后面的 SQL 代码)。
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]