Schreiben von LINQ-Abfragen für den Tabellendienst
Abfragen für den Tabellendienst können mithilfe von LINQ-Syntax geschrieben werden. In den folgenden Beispielen wird gezeigt, wie Beispielabfragen ähnlich wie in Abfragetabellen und Entitäten gezeigt werden, aber LINQ anstelle des REST-Protokolls verwendet werden.
Der Tabellendienst unterstützt das Ausführen einfacher Abfragen, die alle Eigenschaften einer Entität abrufen. Es ist auch möglich, eine Teilmenge der Eigenschaften einer Entität auszuwählen. Der Tabellendienst unterstützt zudem das Filtern von Abfrageergebnissen mit dem Where
-Operator; außerdem kann bestimmt werden, wie viele Entitäten mit dem Take
-Operator zurückgegeben werden sollen.
Ausführliche Informationen dazu, welche LINQ-Operatoren vom Tabellendienst unterstützt werden, finden Sie unter Unterstützte Abfrageoperatoren für den Tabellendienst.
Projizieren von Entitätseigenschaften
Mit der select
-Klausel von LINQ kann eine Teilmenge von Eigenschaften aus einer Entität oder Entitäten projiziert werden. Die maximale Anzahl der Eigenschaften, die projiziert werden können, beträgt 255. Dies entspricht auch der maximalen Anzahl von Eigenschaften in einer Entität.
Um die Eigenschaften einer Entität zu projizieren, muss der Client OData Data Service Version 3.0 unterstützen, wobei entweder die DataServiceVersion
Header oder MaxDataServiceVersion
wie folgt angegeben werden:
DataServiceVersion: 3.0;NetFx
MaxDataServiceVersion: 3.0;NetFx
Das folgende Beispiel veranschaulicht, wie auf Eigenschaften aus einer einzigen Entität mithilfe der erforderlichen Objektinitialisierung projiziert werden:
var query = from entity in dataServiceContext.CreateQuery<SampleEntity>(tableName)
where entity.PartitionKey == "MyPartitionKey"
select new { entity.RowKey };
Im folgenden Beispiel werden drei Eigenschaften einer Entität projiziert, die über insgesamt zehn Eigenschaften verfügt. In diesem Beispiel entsprechen die zehn Eigenschaften von SampleEntity
den Buchstaben von A bis 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
};
Sie können Entitätseigenschaften auch projizieren, indem Sie die $select-Abfrageoption in einer Standard-REST-Anforderung verwenden. Weitere Informationen finden Sie unter Abfrageentitäten.
Weitere Informationen zu Entitätsprojektionen und Transformationen finden Sie unter Auswählen der Systemabfrageoption ($select) in der OData-Dokumentation.
Zurückgeben der obersten n Entitäten
Verwenden Sie zum Zurückgeben von n
-Entitäten den Take
-Operator von LINQ. Beachten Sie, dass von einer einzigen Abfrage maximal 1.000 Entitäten zurückgegeben werden können. Wenn Sie einen größeren Wert als 1.000 angeben, tritt für den Take
-Operator Fehlercode 400 (Ungültige Anforderung) auf.
Im folgenden Beispiel werden die obersten 10 Entitäten aus einer Customers-Tabelle zurückgegeben:
var query = (from entity in context.CreateQuery<Customer>("Top10Customers")
select entity).Take(10);
Filtern nach Zeichenfolgeneigenschaften
Im folgenden Beispiel wird nach zwei Zeichenfolgeneigenschaften gefiltert:
var query = from entity in context.CreateQuery<Customer>("SpecificCustomer")
where entity.LastName.Equals("Smith")
&& entity.FirstName.Equals("John")
select entity;
Im folgenden Beispiel wird mit Vergleichsoperatoren ein Präfixvergleich ausgeführt, um Entitäten mit einer LastName
-Eigenschaft zurückzugeben, die mit dem Buchstaben 'A' beginnt:
var query = from entity in context.CreateQuery<Customer>("CustomersA")
where entity.LastName.CompareTo("A") >= 0
&& entity.LastName.CompareTo("B") < 0
select entity;
Filtern nach numerischen Eigenschaften
Im folgenden Beispiel werden alle Entitäten mit einer Age
-Eigenschaft zurückgegeben, deren Wert größer als 30 ist:
var query = from entity in context.CreateQuery<Customer>("CustomersOver30")
where entity.Age > 30
select entity;
In diesem Beispiel werden alle Entitäten mit einer AmountDue
-Eigenschaft zurückgegeben, deren Wert kleiner oder gleich 100,25 ist:
var query = from entity in context.CreateQuery<Customer>("CustomersAmountDue")
where entity.AmountDue <= 100.25
select entity;
Filtern nach booleschen Eigenschaften
Im folgenden Beispiel werden alle Entitäten zurückgegeben, bei denen die IsActive
-Eigenschaft auf true
festgelegt ist:
var query = from entity in context.CreateQuery<Customer>("ActiveCustomers")
where entity.IsActive == true
select entity;
Filtern nach DateTime-Eigenschaften
Im folgenden Beispiel werden Entitäten zurückgegeben, bei denen die CustomerSince
-Eigenschaft gleich dem 10. Juli 2008 ist:
DateTime dt = new DateTime(2008, 7, 10);
var query = from entity in context.CreateQuery<Customer>("CustomerSince")
where entity.CustomerSince.Equals(dt)
select entity;
Weitere Informationen
Abfragen von Tabellen und Entitäten
Für den Tabellendienst unterstützte Abfrageoperatoren