Menulis kueri LINQ terhadap layanan Tabel
Anda dapat menulis kueri terhadap layanan Tabel menggunakan sintaks LINQ. Contoh berikut menunjukkan cara menulis kueri sampel yang mirip dengan kueri sampel yang diperlihatkan dalam Mengkueri Tabel dan Entitas, tetapi menggunakan LINQ alih-alih protokol REST.
Layanan Tabel mendukung eksekusi kueri sederhana yang mengambil semua properti entitas; Anda juga dapat memilih subset properti entitas. Layanan Tabel juga mendukung pemfilteran hasil kueri menggunakan Where
operator, dan menentukan berapa banyak entitas yang akan dikembalikan menggunakan Take
operator.
Untuk detail tentang operator LINQ mana yang didukung oleh layanan Tabel, lihat Operator Kueri yang Didukung untuk Layanan Tabel.
Memproyekan Properti Entitas
Klausa LINQ select
dapat digunakan untuk memproyeksikan subset properti dari entitas atau entitas. Jumlah maksimum properti yang dapat diproyeksikan adalah 255, yang juga merupakan jumlah maksimum properti dalam entitas.
Untuk memproyeksikan properti entitas, klien harus mendukung OData Data Service Versi 3.0, yang ditunjukkan dengan menentukan DataServiceVersion
header atau MaxDataServiceVersion
sebagai berikut:
DataServiceVersion: 3.0;NetFx
MaxDataServiceVersion: 3.0;NetFx
Contoh berikut menunjukkan cara memproyeksikan properti dari satu entitas, menggunakan penginisialisasi objek yang diperlukan:
var query = from entity in dataServiceContext.CreateQuery<SampleEntity>(tableName)
where entity.PartitionKey == "MyPartitionKey"
select new { entity.RowKey };
Contoh berikut memproyeksikan 3 properti dari entitas yang memiliki 10 properti. Dalam contoh ini, SampleEntity
10 properti adalah huruf dari A hingga J:
IEnumerable<SampleEntity> query = from entity in
dataServiceContext.CreateQuery<SampleEntity>(tableName)
where entity.PartitionKey == "MyPartitionKey"
select new SampleEntity
{
PartitionKey = entity.PartitionKey,
RowKey = entity.RowKey,
A = entity.A,
D = entity.D,
I = entity.I
};
Anda juga dapat memproyeikan properti entitas dengan menggunakan opsi kueri $select dalam permintaan REST standar. Untuk informasi selengkapnya, lihat Entitas Kueri.
Untuk informasi selengkapnya tentang proyeksi dan transformasi entitas, lihat Pilih Opsi Kueri Sistem ($select) dalam dokumentasi OData.
Mengembalikan Entitas n Teratas
Untuk mengembalikan n
entitas, gunakan operator LINQ Take
. Perhatikan bahwa jumlah maksimum entitas yang dapat dikembalikan dalam satu kueri adalah 1.000. Menentukan nilai yang lebih besar dari 1.000 untuk Take
operator menghasilkan kode kesalahan 400 (Permintaan Buruk).
Contoh berikut mengembalikan 10 entitas teratas dari tabel Pelanggan:
var query = (from entity in context.CreateQuery<Customer>("Top10Customers")
select entity).Take(10);
Pemfilteran pada Properti String
Contoh berikut memfilter dua properti String:
var query = from entity in context.CreateQuery<Customer>("SpecificCustomer")
where entity.LastName.Equals("Smith")
&& entity.FirstName.Equals("John")
select entity;
Contoh berikut melakukan pencocokan awalan menggunakan operator perbandingan untuk mengembalikan entitas dengan properti yang LastName
dimulai dengan huruf 'A':
var query = from entity in context.CreateQuery<Customer>("CustomersA")
where entity.LastName.CompareTo("A") >= 0
&& entity.LastName.CompareTo("B") < 0
select entity;
Pemfilteran pada Properti Numerik
Contoh berikut mengembalikan semua entitas dengan properti yang Age
nilainya lebih besar dari 30:
var query = from entity in context.CreateQuery<Customer>("CustomersOver30")
where entity.Age > 30
select entity;
Contoh ini mengembalikan semua entitas dengan AmountDue
properti yang nilainya kurang dari atau sama dengan 100,25:
var query = from entity in context.CreateQuery<Customer>("CustomersAmountDue")
where entity.AmountDue <= 100.25
select entity;
Pemfilteran pada Properti Boolean
Contoh berikut mengembalikan semua entitas tempat IsActive
properti diatur ke true
:
var query = from entity in context.CreateQuery<Customer>("ActiveCustomers")
where entity.IsActive == true
select entity;
Pemfilteran pada Properti DateTime
Contoh berikut mengembalikan entitas di mana CustomerSince
properti sama dengan 10 Juli 2008:
DateTime dt = new DateTime(2008, 7, 10);
var query = from entity in context.CreateQuery<Customer>("CustomerSince")
where entity.CustomerSince.Equals(dt)
select entity;
Lihat juga
Mengkueri Tabel dan Entitas
Operator Kueri Yang Didukung untuk Layanan Tabel