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, SampleEntity10 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