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