다음을 통해 공유


방법: 정식 함수 호출

EntityFunctions 클래스에는 LINQ to Entities 쿼리에 사용할 정식 함수를 노출하는 메서드가 포함되어 있습니다. 정식 함수에 대한 자세한 내용은 정식 함수를 참조하세요.

참고 항목

AsUnicode 클래스의 AsNonUnicodeEntityFunctions 메서드에는 해당하는 정식 함수가 없습니다.

값 집합에 대한 계산을 수행하고 단일 값을 반환하는 정식 함수(집계 정식 함수라고도 함)는 직접 호출할 수 있습니다. 기타 정식 함수는 LINQ to Entities 쿼리의 일부로만 호출할 수 있습니다. 집계 함수를 직접 호출하려면 ObjectQuery<T>를 함수로 전달해야 합니다. 자세한 내용은 아래 두 번째 예제를 참조하세요.

LINQ to Entities 쿼리에서 CLR(공용 언어 런타임) 메서드를 사용하여 일부 정식 함수를 호출할 수 있습니다. canonical 함수에 매핑되는 CLR 메서드 목록은 CLR 메서드와 Canonical 함수 매핑을 참조하세요.

예 1

다음 예에서는 AdventureWorks 판매 모델을 사용합니다. 이 예제에서는 DiffDays 메서드를 사용하여 SellEndDateSellStartDate의 차이가 365일 미만인 제품을 모두 반환하는 LINQ to Entities 쿼리를 실행합니다.

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

참고 항목