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ığı true
tü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