LINQ-lekérdezések írása a Table szolgáltatáson

A Table service-be linq szintaxissal írhat lekérdezéseket. Az alábbi példák bemutatják, hogyan írhat mintalekérdezéseket a Táblák és entitások lekérdezése, de a LINQ használatával a REST protokoll helyett.

A Table szolgáltatás támogatja az entitások összes tulajdonságát lekérő egyszerű lekérdezések végrehajtását; lehetőség van az entitás tulajdonságainak egy részhalmazának kiválasztására is. A Table szolgáltatás a lekérdezési eredmények operátorral Where történő szűrését is támogatja, és megadja, hogy hány entitást kell visszaadni az Take operátor használatával.

A Table service által támogatott LINQ-operátorokkal kapcsolatos részletekért lásd: A Table Service által támogatott lekérdezési operátorok.

Entitás tulajdonságainak kivetítése

A LINQ select záradék egy entitásból vagy entitásból származó tulajdonságok egy részhalmazának kivetítésére használható. Az előrevetíteni kívánt tulajdonságok maximális száma 255, ami egyben az entitások tulajdonságainak maximális száma is.

Egy entitás tulajdonságainak kivetítéséhez az ügyfélnek támogatnia kell az OData Data Service 3.0-s verzióját, amelyet a vagy MaxDataServiceVersion a fejlécek megadásával jelezhet az DataServiceVersion alábbiak szerint:

DataServiceVersion: 3.0;NetFx  
MaxDataServiceVersion: 3.0;NetFx  

Az alábbi példa bemutatja, hogyan projektelhet tulajdonságokat egyetlen entitásból a szükséges objektum-inicializáló használatával:

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

Az alábbi példa 3 tulajdonságot mutat be egy 10 tulajdonsággal rendelkező entitásból. Ebben a példában a SampleEntity10 tulajdonság A és J közötti betűkből áll:

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

Az entitástulajdonságokat egy standard REST-kérelem $select lekérdezési lehetőségével is kivetítheti. További információ: Lekérdezési entitások.

Az entitásvetületekkel és átalakításokkal kapcsolatos további információkért lásd: Rendszer lekérdezési lehetőség kiválasztása ($select) az OData dokumentációjában.

A felső n entitás visszaadása

Entitások visszaadásához n használja a LINQ Take operátort. Vegye figyelembe, hogy az egyetlen lekérdezésben visszaadható entitások maximális száma 1000. Ha 1000-nél nagyobb értéket ad meg az operátorhoz, a Take 400-ás hibakód jelenik meg (hibás kérés).

Az alábbi példa a Vevők tábla 10 legnagyobb entitását adja vissza:

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

Szűrés sztringtulajdonságokra

Az alábbi példa két sztringtulajdonságra szűr:

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

Az alábbi példa összehasonlító operátorok használatával végez előtag-egyeztetést az "A" betűvel kezdődő tulajdonságú LastName entitások visszaadásához:

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

Szűrés numerikus tulajdonságok alapján

Az alábbi példa az összes olyan tulajdonsággal rendelkező Age entitást adja vissza, amelynek értéke nagyobb, mint 30:

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

Ez a példa az összes olyan tulajdonsággal rendelkező AmountDue entitást adja vissza, amelynek értéke kisebb vagy egyenlő 100,25-nél:

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

Szűrés logikai tulajdonságok alapján

Az alábbi példa az összes olyan entitást visszaadja, ahol a IsActive tulajdonság értéke true:

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

Szűrés DateTime-tulajdonságok alapján

Az alábbi példa olyan entitásokat ad vissza, amelyekben a CustomerSince tulajdonság értéke 2008. július 10.:

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

Lásd még:

Táblák és entitások lekérdezése
A Table Service által támogatott lekérdezési operátorok