Psaní dotazů LINQ pro službu Table Service
Dotazy na službu Table service můžete psát pomocí syntaxe LINQ. Následující příklady ukazují, jak psát ukázkové dotazy podobné ukázkovým dotazům zobrazeným v části Dotazování tabulek a entit, ale místo protokolu REST se používají LINQ.
Služba Table service podporuje provádění jednoduchých dotazů, které načítají všechny vlastnosti entity. Je také možné vybrat podmnožinu vlastností entity. Služba Table service také podporuje filtrování výsledků dotazu pomocí operátoru Where
a určení počtu entit, které se mají vrátit pomocí operátoru Take
.
Podrobnosti o tom, které operátory LINQ podporuje služba Table Service, najdete v tématu Podporované operátory dotazů pro službu Table Service.
Promítání vlastností entity
Klauzuli LINQ select
je možné použít k promítaní podmnožinu vlastností z entity nebo entit. Maximální počet vlastností, které lze projektovat, je 255, což je také maximální počet vlastností v entitě.
Aby bylo možné promítnout vlastnosti entity, musí klient podporovat službu OData Data Service verze 3.0, a to zadáním hlaviček nebo DataServiceVersion
MaxDataServiceVersion
následujícím způsobem:
DataServiceVersion: 3.0;NetFx
MaxDataServiceVersion: 3.0;NetFx
Následující příklad ukazuje, jak promítnout vlastnosti z jedné entity pomocí požadovaného inicializátoru objektu:
var query = from entity in dataServiceContext.CreateQuery<SampleEntity>(tableName)
where entity.PartitionKey == "MyPartitionKey"
select new { entity.RowKey };
Následující příklad projektuje 3 vlastnosti z entity, která má 10 vlastností. V tomto příkladu SampleEntity
jsou 10 vlastností písmena od A do 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
};
Vlastnosti entit můžete také projektovat pomocí možnosti dotazu $select ve standardním požadavku REST. Další informace najdete v tématu Dotazování entit.
Další informace o projekcích a transformacích entit najdete v tématu Výběr možnosti systémového dotazu ($select) v dokumentaci k OData.
Vrácení prvních n entit
K vrácení n
entit použijte operátor LINQ Take
. Všimněte si, že maximální počet entit, které se můžou vrátit v jednom dotazu, je 1 000. Zadání hodnoty větší než 1 000 pro Take
operátor způsobí kód chyby 400 (Chybný požadavek).
Následující příklad vrátí prvních 10 entit z tabulky Customers:
var query = (from entity in context.CreateQuery<Customer>("Top10Customers")
select entity).Take(10);
Filtrování vlastností řetězce
Následující příklad filtruje dvě vlastnosti řetězce:
var query = from entity in context.CreateQuery<Customer>("SpecificCustomer")
where entity.LastName.Equals("Smith")
&& entity.FirstName.Equals("John")
select entity;
Následující příklad provádí porovnávání předpon pomocí relačních operátorů a vrací entity s LastName
vlastností začínající písmenem "A":
var query = from entity in context.CreateQuery<Customer>("CustomersA")
where entity.LastName.CompareTo("A") >= 0
&& entity.LastName.CompareTo("B") < 0
select entity;
Filtrování číselných vlastností
Následující příklad vrátí všechny entity s Age
vlastností, jejíž hodnota je větší než 30:
var query = from entity in context.CreateQuery<Customer>("CustomersOver30")
where entity.Age > 30
select entity;
Tento příklad vrátí všechny entity s AmountDue
vlastností, jejichž hodnota je menší nebo rovna 100,25:
var query = from entity in context.CreateQuery<Customer>("CustomersAmountDue")
where entity.AmountDue <= 100.25
select entity;
Filtrování logických vlastností
Následující příklad vrátí všechny entity, u kterých IsActive
je vlastnost nastavená na true
:
var query = from entity in context.CreateQuery<Customer>("ActiveCustomers")
where entity.IsActive == true
select entity;
Filtrování vlastností DateTime
Následující příklad vrátí entity, u CustomerSince
kterých se vlastnost rovná 10. červenci 2008:
DateTime dt = new DateTime(2008, 7, 10);
var query = from entity in context.CreateQuery<Customer>("CustomerSince")
where entity.CustomerSince.Equals(dt)
select entity;
Viz také
Dotazování tabulek a entit
Podporované operátory dotazů pro službu Table Service