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