Pisanie zapytań LINQ względem usługi Table Service
Zapytania w usłudze Table Service można pisać przy użyciu składni LINQ. W poniższych przykładach pokazano, jak pisać przykładowe zapytania podobne do przykładowych zapytań wyświetlanych w artykule Wykonywanie zapytań dotyczących tabel i jednostek, ale przy użyciu linQ zamiast protokołu REST.
Usługa Table Service obsługuje wykonywanie prostych zapytań, które pobierają wszystkie właściwości jednostki; Istnieje również możliwość wybrania podzestawu właściwości jednostki. Usługa Table Service obsługuje również filtrowanie wyników zapytania przy użyciu Where
operatora i określanie liczby jednostek do zwrócenia przy użyciu Take
operatora .
Aby uzyskać szczegółowe informacje o operatorach LINQ obsługiwanych przez usługę Table Service, zobacz Operatory zapytań obsługiwane przez usługę Table Service.
Projekcja właściwości jednostki
Klauzula LINQ select
może służyć do projekcji podzestawu właściwości z jednostki lub jednostek. Maksymalna liczba właściwości, które można rzutować, wynosi 255, która jest również maksymalną liczbą właściwości w jednostce.
Aby projektować właściwości jednostki, klient musi obsługiwać usługę danych OData w wersji 3.0, wskazaną przez określenie DataServiceVersion
nagłówków lub MaxDataServiceVersion
w następujący sposób:
DataServiceVersion: 3.0;NetFx
MaxDataServiceVersion: 3.0;NetFx
W poniższym przykładzie pokazano, jak projektować właściwości z pojedynczej jednostki przy użyciu inicjatora wymaganego obiektu:
var query = from entity in dataServiceContext.CreateQuery<SampleEntity>(tableName)
where entity.PartitionKey == "MyPartitionKey"
select new { entity.RowKey };
Poniższy przykład zawiera 3 właściwości z jednostki, która ma 10 właściwości. W tym przykładzie SampleEntity
10 właściwości to litery 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
};
Właściwości jednostki można również projektować przy użyciu opcji zapytania $select w standardowym żądaniu REST. Aby uzyskać więcej informacji, zobacz Query Entities (Jednostki zapytań).
Aby uzyskać więcej informacji na temat projekcji i przekształceń jednostek, zobacz Wybieranie opcji zapytania systemowego ($select) w dokumentacji OData.
Zwracanie pierwszych n jednostek
Aby zwrócić n
jednostki, użyj operatora LINQ Take
. Należy pamiętać, że maksymalna liczba jednostek, które mogą być zwracane w jednym zapytaniu, wynosi 1000. Określenie wartości większej niż 1000 dla Take
operatora powoduje wyświetlenie kodu błędu 400 (Nieprawidłowe żądanie).
Poniższy przykład zwraca 10 pierwszych jednostek z tabeli Customers:
var query = (from entity in context.CreateQuery<Customer>("Top10Customers")
select entity).Take(10);
Filtrowanie we właściwościach ciągu
Poniższy przykład filtruje dwie właściwości ciągu:
var query = from entity in context.CreateQuery<Customer>("SpecificCustomer")
where entity.LastName.Equals("Smith")
&& entity.FirstName.Equals("John")
select entity;
Poniższy przykład wykonuje dopasowywanie prefiksów przy użyciu operatorów porównania, aby zwrócić jednostki z właściwością rozpoczynającą LastName
się od litery "A":
var query = from entity in context.CreateQuery<Customer>("CustomersA")
where entity.LastName.CompareTo("A") >= 0
&& entity.LastName.CompareTo("B") < 0
select entity;
Filtrowanie we właściwościach liczbowych
Poniższy przykład zwraca wszystkie jednostki z właściwością Age
, której wartość jest większa niż 30:
var query = from entity in context.CreateQuery<Customer>("CustomersOver30")
where entity.Age > 30
select entity;
W tym przykładzie zwracane są wszystkie jednostki z właściwością AmountDue
, której wartość jest mniejsza lub równa 100,25:
var query = from entity in context.CreateQuery<Customer>("CustomersAmountDue")
where entity.AmountDue <= 100.25
select entity;
Filtrowanie właściwości logicznych
Poniższy przykład zwraca wszystkie jednostki, w których właściwość jest ustawiona IsActive
na true
wartość :
var query = from entity in context.CreateQuery<Customer>("ActiveCustomers")
where entity.IsActive == true
select entity;
Filtrowanie we właściwościach daty/godziny
Poniższy przykład zwraca jednostki, w których CustomerSince
właściwość jest równa 10 lipca 2008 r.:
DateTime dt = new DateTime(2008, 7, 10);
var query = from entity in context.CreateQuery<Customer>("CustomerSince")
where entity.CustomerSince.Equals(dt)
select entity;
Zobacz też
Wykonywanie zapytań dotyczących tabel i jednostek
Operatory zapytań obsługiwane przez usługę Table Service