如何:调用规范函数
EntityFunctions 类包含公开要在 LINQ to Entities 查询中使用的规范函数的方法。 有关规范函数的信息,请参阅规范函数。
备注
AsUnicode 类中的 AsNonUnicode 和 EntityFunctions 方法不具有规范函数等效性。
可以直接调用对一组值执行计算并返回单个值的规范函数(也成为聚合规范函数)。 其他规范函数只能作为 LINQ to Entities 查询的一部分调用。 若要直接调用聚合函数,必须将 ObjectQuery<T> 传递到此函数。 有关更多信息,请参见下面的第二个示例。
可以在 LINQ to Entities 查询中使用公共语言运行时 (CLR) 方法调用某些规范函数。 有关映射到规范函数的 CLR 方法的列表,请参阅 CLR 方法到规范函数映射。
示例 1
以下示例使用 AdventureWorks 销售模型。 此示例执行一个 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 销售模型。 此示例直接调用聚合 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