次の方法で共有


方法 : ユーザー定義関数をインラインで呼び出す (LINQ to SQL)

ユーザー定義関数はインラインで呼び出すことができますが、遅延実行のクエリに含まれる関数は、そのクエリが実行されるまで実行されません。 詳細については、「LINQ クエリの概要 (C#)」を参照してください。

同じ関数をクエリの外部で呼び出すと、LINQ to SQL によって、メソッド呼び出し式から単純なクエリが作成されます。 この SQL 構文を次に示します (@p0 パラメーターは渡される定数にバインドされます)。

SELECT dbo.ReverseCustName(@p0)

LINQ to SQL によって、次の結果が作成されます。

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

使用例

次の LINQ to SQL クエリでは、生成されたユーザー定義関数メソッド ReverseCustName がインライン呼び出しになっています。 クエリは遅延実行されるので、この関数は即座には実行されません。 このクエリ用に作成される SQL は、データベース内のユーザー定義関数の呼び出しに変換されます (クエリの後の SQL コードを参照してください)。

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]

参照

その他の技術情報

ユーザー定義関数 (LINQ to SQL)