Cara: Memanggil Fungsi Kanonis
Kelas EntityFunctions berisi metode yang memperlihatkan fungsi kanonik untuk digunakan dalam kueri LINQ ke Entitas. Untuk informasi tentang fungsi kanonik, lihat Fungsi Kanonik.
Catatan
Metode AsUnicode dan AsNonUnicode di kelas EntityFunctions tidak memiliki padanan fungsi kanonik.
Fungsi kanonik yang melakukan penghitungan pada sekumpulan nilai dan mengembalikan nilai tunggal (juga dikenal sebagai fungsi kanonik agregat) dapat langsung dipanggil. Fungsi kanonik lainnya hanya dapat dipanggil sebagai bagian dari kueri LINQ ke Entitas. Untuk memanggil fungsi agregat secara langsung, Anda harus meneruskan ObjectQuery<T> ke fungsi tersebut. Untuk informasi selengkapnya, lihat contoh kedua di bawah ini.
Anda dapat memanggil beberapa fungsi kanonik dengan menggunakan metode runtime bahasa umum (CLR) di kueri LINQ ke Entitas. Untuk daftar metode runtime bahasa umum yang memetakan ke fungsi kanonik, lihat Metode runtime bahasa umum ke Pemetaan Fungsi Kanonik.
Contoh 1
Contoh berikut menggunakan Model Penjualan AdventureWorks. Contoh menjalankan kueri LINQ ke Entitas yang menggunakan metode DiffDays untuk mengembalikan semua produk dengan perbedaan antara SellEndDate
dan SellStartDate
kurang dari 365 hari:
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
Contoh 2
Contoh berikut menggunakan Model Penjualan AdventureWorks. Contoh memanggil metode StandardDeviation agregat secara langsung untuk mengembalikan simpangan baku subtotal SalesOrderHeader
. Perhatikan bahwa ObjectQuery<T> diteruskan ke fungsi, yang memungkinkan fungsi dipanggil tanpa menjadi bagian dari kueri LINQ ke Entitas.
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