Sdílet prostřednictvím


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 DataServiceVersionMaxDataServiceVersion 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 SampleEntityjsou 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