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 SampleEntity
zijn 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