如何:调用规范函数

EntityFunctions 类包含公开要在 LINQ to Entities 查询中使用的规范函数的方法。 有关规范函数的信息,请参阅规范函数

备注

AsUnicode 类中的 AsNonUnicodeEntityFunctions 方法不具有规范函数等效性。

可以直接调用对一组值执行计算并返回单个值的规范函数(也成为聚合规范函数)。 其他规范函数只能作为 LINQ to Entities 查询的一部分调用。 若要直接调用聚合函数,必须将 ObjectQuery<T> 传递到此函数。 有关更多信息,请参见下面的第二个示例。

可以在 LINQ to Entities 查询中使用公共语言运行时 (CLR) 方法调用某些规范函数。 有关映射到规范函数的 CLR 方法的列表,请参阅 CLR 方法到规范函数映射

示例 1

以下示例使用 AdventureWorks 销售模型。 此示例执行一个 LINQ to Entities 查询,该查询使用 DiffDays 方法返回 SellEndDateSellStartDate 之间相差小于 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

请参阅