VENDAS: 1-800-867-1389

Gravando consultas LINQ no serviço Tabela

Atualizado: abril de 2015

É possível escrever consultas ao serviço Tabela usando sintaxe LINQ. Os exemplos a seguir mostram como escrever consultas de exemplo semelhantes às consultas de exemplo mostradas em Consultando tabelas e entidades, mas usando LINQ, em vez do protocolo REST.

O serviço Tabela oferece suporte à execução de consultas simples que recuperam todas as propriedades de uma entidade; não é possível selecionar um subconjunto das propriedades de uma entidade. O serviço Tabela também oferece suporte à filtragem de resultados da consulta usando o operador Where e especificando quantas entidades devem ser retornadas usando o operador Take.

Para obter detalhes sobre quais operadores LINQ têm suporte do serviço Tabela, consulte Operadores de consulta (serviço do suporte Tabela).

A cláusula select do LINQ pode ser usada para projetar um subconjunto de propriedades de uma ou mais entidades. O número máximo de propriedades que podem ser projetadas é 255, que também é o número máximo de propriedades em uma entidade.

Para projetar as propriedades de uma entidade, o cliente deve oferecer suporte ao OData Data Service versão 2.0, indicado pela especificação dos cabeçalhos DataServiceVersion ou MaxDataServiceVersion da seguinte forma:

DataServiceVersion: 2.0;NetFx
MaxDataServiceVersion: 2.0;NetFx

O exemplo a seguir demonstra como projetar as propriedades de uma única entidade, usando o inicializador de objeto necessário:

var query = from entity in dataServiceContext.CreateQuery<SampleEntity>(tableName)
                 where entity.PartitionKey == "MyPartitionKey"
                 select new { entity.RowKey };

O exemplo a seguir projeta 3 propriedades de uma entidade que tem 10 propriedades. Neste exemplo, as 10 propriedades de SampleEntity são as 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
                                      };

Não há suporte para projeção única de entidade. A solicitação REST gerada pelo seguinte código é válida:

var query = from entity in dataServiceContext.CreateQuery<SampleEntity>(tableName)
                 where entity.PartitionKey == "MyPartitionKey"
                 select { entity.RowKey }; // this code is invalid!

Você também pode projetar propriedades de entidade usando a opção de consulta $select em uma solicitação padrão REST. Para obter mais informações, consulte Entidades de consulta.

Para obter mais informações sobre as projeções e transformações da entidade, consulte Selecionar opção de consulta do sistema ($select) na documentação de OData.

Para retornar n entidades, use o operador LINQ Take. Observe que o número máximo de entidades que podem ser retornadas em uma consulta individual é 1.000. A especificação de um valor maior que 1.000 para o operador Take resulta em código de erro 400 (Solicitação Incorreta).

O exemplo a seguir retorna as 10 principais entidades de uma tabela Clientes:

var query = (from entity in context.CreateQuery<Customer>("Top10Customers")
                 select entity).Take(10);

O exemplo a seguir é filtrado com base em duas propriedades String:

var query = from entity in context.CreateQuery<Customer>("SpecificCustomer")
                 where entity.LastName.Equals("Smith")
                 && entity.FirstName.Equals("John")
                 select entity;

O exemplo a seguir executa a correspondência de prefixo usando operadores de comparação para retornar entidades com uma propriedade LastName começando 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;

O exemplo a seguir retorna todas as entidades com uma propriedade Age cujo valor é maior que 30:

var query = from entity in context.CreateQuery<Customer>("CustomersOver30")
                 where entity.Age > 30
                 select entity;

Este exemplo retorna todas as entidades com uma propriedade AmountDue cujo valor é menor ou igual a 100,25:

var query = from entity in context.CreateQuery<Customer>("CustomersAmountDue")
                 where entity.AmountDue <= 100.25
                 select entity;

O exemplo a seguir retorna todas as entidades nas quais a propriedade IsActive está definida como true:

var query = from entity in context.CreateQuery<Customer>("ActiveCustomers")
                 where entity.IsActive == true
                 select entity;

O exemplo a seguir retorna as entidades nas quais a propriedade CustomerSince é 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

Isso foi útil para você?
(1500 caracteres restantes)
Agradecemos os seus comentários
Mostrar:
© 2015 Microsoft