Escrever consultas LINQ no serviço Tabela
Pode escrever consultas no serviço Tabela com a sintaxe LINQ. Os exemplos seguintes mostram como escrever consultas de exemplo semelhantes às consultas de exemplo apresentadas em Tabelas e Entidades de Consulta, mas com LINQ em vez do protocolo REST.
O serviço Tabela suporta a execução de consultas simples que obtêm todas as propriedades de uma entidade; também é possível selecionar um subconjunto das propriedades de uma entidade. O serviço Tabela também suporta a filtragem dos resultados da consulta com o Where
operador e a especificação de quantas entidades deve devolver com o Take
operador.
Para obter detalhes sobre quais os operadores LINQ suportados pelo serviço Tabela, veja Operadores de Consulta Suportados para o Serviço de Tabelas.
Propriedades da Entidade de Projeção
A cláusula LINQ select
pode ser utilizada para projetar um subconjunto de propriedades de uma entidade ou entidades. O número máximo de propriedades que podem ser projetadas é 255, que é também o número máximo de propriedades numa entidade.
Para projetar as propriedades de uma entidade, o cliente tem de suportar a Versão 3.0 do Serviço de Dados OData, indicada ao especificar os cabeçalhos ou MaxDataServiceVersion
da DataServiceVersion
seguinte forma:
DataServiceVersion: 3.0;NetFx
MaxDataServiceVersion: 3.0;NetFx
O exemplo seguinte demonstra como projetar propriedades de uma única entidade com o inicializador de objetos necessário:
var query = from entity in dataServiceContext.CreateQuery<SampleEntity>(tableName)
where entity.PartitionKey == "MyPartitionKey"
select new { entity.RowKey };
O exemplo seguinte projeta 3 propriedades de uma entidade que tem 10 propriedades. Neste exemplo, SampleEntity
as propriedades de 10 são letras de A a 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
};
Também pode projetar propriedades de entidades com a opção de consulta $select num pedido REST padrão. Para obter mais informações, veja Entidades de Consulta.
Para obter mais informações sobre projeções e transformações de entidades, veja Selecionar Opção de Consulta do Sistema ($select) na documentação OData.
Devolver as Entidades Principais n
Para devolver n
entidades, utilize o operador LINQ Take
. Tenha em atenção que o número máximo de entidades que podem ser devolvidas numa única consulta é 1000. Especificar um valor superior a 1000 para o Take
operador resulta no código de erro 400 (Pedido Incorreto).
O exemplo seguinte devolve as 10 principais entidades de uma tabela Clientes:
var query = (from entity in context.CreateQuery<Customer>("Top10Customers")
select entity).Take(10);
Filtrar nas Propriedades da Cadeia
O exemplo seguinte filtra duas propriedades da Cadeia:
var query = from entity in context.CreateQuery<Customer>("SpecificCustomer")
where entity.LastName.Equals("Smith")
&& entity.FirstName.Equals("John")
select entity;
O exemplo seguinte efetua a correspondência de prefixos com operadores de comparação para devolver entidades com uma LastName
propriedade que começa com a letra "A":
var query = from entity in context.CreateQuery<Customer>("CustomersA")
where entity.LastName.CompareTo("A") >= 0
&& entity.LastName.CompareTo("B") < 0
select entity;
Filtrar em Propriedades Numéricas
O exemplo seguinte devolve todas as entidades com uma Age
propriedade cujo valor é superior a 30:
var query = from entity in context.CreateQuery<Customer>("CustomersOver30")
where entity.Age > 30
select entity;
Este exemplo devolve todas as entidades com uma AmountDue
propriedade cujo valor é menor ou igual a 100,25:
var query = from entity in context.CreateQuery<Customer>("CustomersAmountDue")
where entity.AmountDue <= 100.25
select entity;
Filtrar em Propriedades Booleanas
O exemplo seguinte devolve todas as entidades em que a IsActive
propriedade está definida como true
:
var query = from entity in context.CreateQuery<Customer>("ActiveCustomers")
where entity.IsActive == true
select entity;
Filtrar em Propriedades DateTime
O exemplo seguinte devolve entidades em que a CustomerSince
propriedade é igual a 10 de julho de 2008:
DateTime dt = new DateTime(2008, 7, 10);
var query = from entity in context.CreateQuery<Customer>("CustomerSince")
where entity.CustomerSince.Equals(dt)
select entity;
Consulte também
Consultar Tabelas e Entidades
Operadores de Consulta Suportados para o Serviço de Tabelas