Nasıl yapılır: Kurallı İşlevler Çağırma

sınıfı, EntityFunctions LINQ to Entities sorgularında kullanılacak kurallı işlevleri kullanıma sunan yöntemler içerir. Kurallı işlevler hakkında bilgi için bkz . Kurallı İşlevler.

Not

AsUnicode sınıfındaki ve AsNonUnicode yöntemleri kurallı EntityFunctions işlev eşdeğerlerine sahip değildir.

Bir değer kümesi üzerinde hesaplama yapan ve tek bir değer döndüren kurallı işlevler (toplama kurallı işlevler olarak da bilinir) doğrudan çağrılabilir. Diğer kurallı işlevler yalnızca LINQ to Entities sorgusunun parçası olarak çağrılabilir. Bir toplama işlevini doğrudan çağırmak için işleve bir ObjectQuery<T> geçirmeniz gerekir. Daha fazla bilgi için aşağıdaki ikinci örne bakın.

LINQ to Entities sorgularında ortak dil çalışma zamanı (CLR) yöntemlerini kullanarak bazı kurallı işlevleri çağırabilirsiniz. Kurallı işlevlerle eşleyen CLR yöntemlerinin listesi için bkz . CLR Yönteminden Kurallı İşlev Eşlemesine.

Örnek 1

Aşağıdaki örnekte AdventureWorks Satış Modeli kullanılmaktadır. Örnek, ile arasındaki SellEndDate SellStartDate farkın 365 günden az olduğu tüm ürünleri döndürmek için yöntemini kullanan DiffDays bir LINQ to Entities sorgusu yürütür:

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

Örnek 2

Aşağıdaki örnekte AdventureWorks Satış Modeli kullanılmaktadır. Örnek, alt toplamların standart sapması SalesOrderHeader döndürmek için toplama StandardDeviation yöntemini doğrudan çağırır. bir ObjectQuery<T> işlevine geçirildiğinden, LINQ to Entities sorgusunun parçası olmadan çağrılmasını sağlar.

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

Ayrıca bkz.