正規関数を呼び出す方法 (LINQ to Entities)
EntityFunctions クラスには、LINQ to Entities クエリで使用する正規関数を公開するメソッドが含まれています。 正規関数の詳細については、「正規関数 (Entity SQL)」を参照してください。
注 : |
---|
EntityFunctions クラスの AsUnicode メソッドと AsNonUnicode メソッドには正規関数に相当するものがありません。 |
値のセットに対して計算を実行して 1 つの値を返す正規関数 (集計正規関数とも呼ばれる) は、直接呼び出すことができます。 他の正規関数は、LINQ to Entities クエリの一部としてしか呼び出すことができません。 集計関数を直接呼び出すには、その関数に ObjectQuery を渡す必要があります。 詳細については、以下の 2 番目の例を参照してください。
一部の正規関数は、LINQ to Entities クエリで共通言語ランタイム (CLR) メソッドを使用して呼び出すことができます。 正規関数にマップされる CLR メソッドの一覧については、「CLR メソッドと正規関数とのマッピング」を参照してください。
例
AdventureWorks Sales Model を使用する例を次に示します。 この例で実行される LINQ to Entities クエリは、DiffDays メソッドを使用して、SellEndDate と SellStartDate の差が 365 日よりも少ないすべての製品を返します。
Using AWEntities As New AdventureWorksEntities()
Dim products = From p In AWEntities.Products _
Where EntityFunctions.DiffDays(p.SellEndDate, p.SellStartDate) < 365 _
Select p
For Each product In products
Console.WriteLine(product.ProductID)
Next
End Using
using (AdventureWorksEntities AWEntities = new AdventureWorksEntities())
{
var products = from p in AWEntities.Products
where EntityFunctions.DiffDays(p.SellEndDate, p.SellStartDate) < 365
select p;
foreach (var product in products)
{
Console.WriteLine(product.ProductID);
}
}
AdventureWorks Sales Model を使用する例を次に示します。 この例では、SalesOrderHeader の小計の標準偏差を返す集計 StandardDeviation メソッドを直接呼び出します。 ObjectQuery は関数に渡されているため、LINQ to Entities クエリに含まれていなくても呼び出すことができる点に注意してください。
Using AWEntities As New AdventureWorksEntities()
Dim stdDev As Double? = EntityFunctions.StandardDeviation( _
From o In AWEntities.SalesOrderHeaders _
Select o.SubTotal)
Console.WriteLine(stdDev)
End Using
using (AdventureWorksEntities AWEntities = new AdventureWorksEntities())
{
double? stdDev = EntityFunctions.StandardDeviation(
from o in AWEntities.SalesOrderHeaders
select o.SubTotal);
Console.WriteLine(stdDev);
}