Tablo hizmetinde LINQ sorguları yazma

LINQ söz dizimini kullanarak Tablo hizmetine yönelik sorgular yazabilirsiniz. Aşağıdaki örneklerde , Tabloları ve Varlıkları Sorgulama bölümünde gösterilen örnek sorgulara benzer örnek sorguların nasıl yazılması ve REST protokolü yerine LINQ kullanılması gösterilmektedir.

Tablo hizmeti, bir varlığın tüm özelliklerini alan basit sorguların yürütülmesini destekler; Bir varlığın özelliklerinin bir alt kümesini seçmek de mümkündür. Tablo hizmeti ayrıca işlecini kullanarak sorgu sonuçlarını filtrelemeyi Where ve işlecini kullanarak döndürülecek varlık sayısını belirtmeyi Take destekler.

Tablo hizmeti tarafından desteklenen LINQ işleçleri hakkında ayrıntılı bilgi için bkz. Tablo Hizmeti için Desteklenen Sorgu İşleçleri.

Varlık Özelliklerini Yansıtma

LINQ select yan tümcesi, bir varlık veya varlıktan özelliklerin bir alt kümesini yansıtmak için kullanılabilir. Yansıtılabilir en fazla özellik sayısı 255'tir ve bu da bir varlıktaki en fazla özellik sayısıdır.

Bir varlığın özelliklerini yansıtmak için istemcinin, veya MaxDataServiceVersion üst bilgilerini aşağıdaki gibi belirterek DataServiceVersion belirtilen OData Veri Hizmeti Sürüm 3.0'ı desteklemesi gerekir:

DataServiceVersion: 3.0;NetFx  
MaxDataServiceVersion: 3.0;NetFx  

Aşağıdaki örnek, gerekli nesne başlatıcıyı kullanarak özelliklerin tek bir varlıktan nasıl projeleneceği gösterilmektedir:

var query = from entity in dataServiceContext.CreateQuery<SampleEntity>(tableName)  
                 where entity.PartitionKey == "MyPartitionKey"  
                 select new { entity.RowKey };  

Aşağıdaki örnek, 10 özelliğe sahip bir varlıktan 3 özellik projeletir. Bu örnekte, SampleEntity'nin 10 özelliği A ile J arasında bir harftir:

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  
                                      };  

Standart rest isteğinde $select sorgu seçeneğini kullanarak varlık özelliklerini de projeleyebilirsiniz. Daha fazla bilgi için bkz. Sorgu Varlıkları.

Varlık projeksiyonları ve dönüştürmeleri hakkında daha fazla bilgi için OData belgelerindeki Sistem Sorgusu Seçeneğini ($select) Seçme bölümüne bakın.

İlk n Varlığı Döndürme

Varlıkları döndürmek n için LINQ Take işlecini kullanın. Tek bir sorguda döndürülebilecek varlık sayısı üst sınırının 1.000 olduğunu unutmayın. İşleç için 1.000'den büyük bir değer belirtilmesi Take hata kodu 400 (Hatalı İstek) ile sonuçlanır.

Aşağıdaki örnek, Müşteriler tablosundaki ilk 10 varlığı döndürür:

var query = (from entity in context.CreateQuery<Customer>("Top10Customers")  
                 select entity).Take(10);  

Dize Özelliklerine Göre Filtreleme

Aşağıdaki örnek iki Dize özelliğine filtre ekler:

var query = from entity in context.CreateQuery<Customer>("SpecificCustomer")  
                 where entity.LastName.Equals("Smith")  
                 && entity.FirstName.Equals("John")  
                 select entity;  

Aşağıdaki örnek, 'A' harfiyle başlayan bir LastName özelliğe sahip varlıkları döndürmek için karşılaştırma işleçlerini kullanarak ön ek eşleştirme gerçekleştirir:

var query = from entity in context.CreateQuery<Customer>("CustomersA")  
                 where entity.LastName.CompareTo("A") >= 0  
                 && entity.LastName.CompareTo("B") < 0  
                 select entity;  

Sayısal Özelliklere Göre Filtreleme

Aşağıdaki örnek, değeri 30'dan büyük olan bir Age özelliğe sahip tüm varlıkları döndürür:

var query = from entity in context.CreateQuery<Customer>("CustomersOver30")  
                 where entity.Age > 30  
                 select entity;  

Bu örnek, değeri 100,25'ten küçük veya buna eşit olan bir AmountDue özelliğe sahip tüm varlıkları döndürür:

var query = from entity in context.CreateQuery<Customer>("CustomersAmountDue")  
                 where entity.AmountDue <= 100.25  
                 select entity;  

Boole Özelliklerine Göre Filtreleme

Aşağıdaki örnek, özelliğinin IsActive olarak ayarlandığı truetüm varlıkları döndürür:

var query = from entity in context.CreateQuery<Customer>("ActiveCustomers")  
                 where entity.IsActive == true  
                 select entity;  

DateTime Özelliklerine Göre Filtreleme

Aşağıdaki örnek, özelliğin CustomerSince 10 Temmuz 2008'e eşit olduğu varlıkları döndürür:

DateTime dt = new DateTime(2008, 7, 10);  
var query = from entity in context.CreateQuery<Customer>("CustomerSince")  
                 where entity.CustomerSince.Equals(dt)  
                 select entity;  

Ayrıca Bkz.

Tabloları ve Varlıkları Sorgulama
Tablo Hizmeti için Desteklenen Sorgu İşleçleri