Partilhar via


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, SampleEntityas 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