LINQ-query's schrijven op basis van de Tabelservice

U kunt query's schrijven voor de Table-service met behulp van linq-syntaxis. In de volgende voorbeelden ziet u hoe u voorbeeldquery's schrijft die vergelijkbaar zijn met de voorbeeldquery's die worden weergegeven in Query's uitvoeren op tabellen en entiteiten, maar met behulp van LINQ in plaats van het REST-protocol.

De Table-service ondersteunt het uitvoeren van eenvoudige query's waarmee alle eigenschappen van een entiteit worden opgehaald; het is ook mogelijk om een subset van de eigenschappen van een entiteit te selecteren. De Tabelservice biedt ook ondersteuning voor het filteren van queryresultaten met behulp van de Where operator en het opgeven van het aantal entiteiten dat moet worden geretourneerd met behulp van de Take operator.

Zie Queryoperators ondersteund voor de Tabelservice voor meer informatie over welke LINQ-operators worden ondersteund door de Table-service.

Entiteitseigenschappen projecteren

De LINQ-component select kan worden gebruikt om een subset van eigenschappen van een entiteit of entiteiten te projecteerde. Het maximum aantal eigenschappen dat kan worden geprojecteerd is 255, wat ook het maximum aantal eigenschappen in een entiteit is.

Als u de eigenschappen van een entiteit wilt projecteren, moet de client OData Data Service versie 3.0 ondersteunen, aangegeven door de DataServiceVersion headers of MaxDataServiceVersion als volgt op te geven:

DataServiceVersion: 3.0;NetFx  
MaxDataServiceVersion: 3.0;NetFx  

In het volgende voorbeeld ziet u hoe u eigenschappen van één entiteit projecteert met behulp van de vereiste object-initialisatiefunctie:

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

In het volgende voorbeeld worden 3 eigenschappen van een entiteit met 10 eigenschappen geprojecteerde. In dit voorbeeld SampleEntityzijn de tien eigenschappen letters van A tot en met 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  
                                      };  

U kunt ook entiteitseigenschappen projecteren met behulp van de optie $select query in een standaard REST-aanvraag. Zie Query-entiteiten voor meer informatie.

Zie Select System Query Option ($select) in de OData-documentatie voor meer informatie over entiteitsprojecties en transformaties.

De top n entiteiten retourneren

Als u entiteiten wilt retourneren n , gebruikt u de linq-operator Take . Houd er rekening mee dat het maximum aantal entiteiten dat in één query kan worden geretourneerd, 1000 is. Het opgeven van een waarde groter dan 1000 voor de Take operator resulteert in foutcode 400 (Ongeldige aanvraag).

In het volgende voorbeeld worden de tien belangrijkste entiteiten uit de tabel Klanten geretourneerd:

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

Filteren op tekenreekseigenschappen

In het volgende voorbeeld worden twee tekenreekseigenschappen gefilterd:

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

In het volgende voorbeeld wordt voorvoegselkoppeling uitgevoerd met behulp van vergelijkingsoperators om entiteiten te retourneren met een LastName eigenschap die begint met de letter 'A':

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

Filteren op numerieke eigenschappen

In het volgende voorbeeld worden alle entiteiten geretourneerd met een Age eigenschap waarvan de waarde groter is dan 30:

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

In dit voorbeeld worden alle entiteiten geretourneerd met een AmountDue eigenschap waarvan de waarde kleiner is dan of gelijk is aan 100,25:

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

Filteren op Booleaanse eigenschappen

In het volgende voorbeeld worden alle entiteiten geretourneerd waarvoor de IsActive eigenschap is ingesteld op true:

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

Filteren op datum/tijd-eigenschappen

In het volgende voorbeeld worden entiteiten geretourneerd waarvan de CustomerSince eigenschap gelijk is aan 10 juli 2008:

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

Zie ook

Query's uitvoeren op tabellen en entiteiten
Queryoperators die worden ondersteund voor de tabelservice