VENTAS: 1-800-867-1389

Escribir consultas LINQ con el servicio Tabla

Actualizado: agosto de 2014

Puede escribir consultas con el servicio Tabla usando sintaxis LINQ. Los ejemplos siguientes muestran cómo escribir consultas de ejemplo similares a las consultas de ejemplo que se muestran en Consultar tablas y entidades, pero con LINQ en lugar de con el protocolo REST.

El servicio Tabla permite ejecutar consultas sencillas que recuperan todas las propiedades de una entidad; no es posible seleccionar un subconjunto de las propiedades de una entidad. El servicio Tabla también permite filtrar los resultados de la consulta mediante el operador Where y especificar el número de entidades que se deben devolver mediante el operador Take.

Para obtener más información sobre los operadores LINQ que admite el servicio Tabla, vea Operadores de consulta admitidos para el servicio Tabla.

La cláusula LINQ select se puede utilizar para proyectar un subconjunto de las propiedades de una o varias entidades. El número máximo de propiedades que se pueden proyectar es de 255, que también es el número máximo de propiedades de una entidad.

Para proyectar las propiedades de una entidad, el cliente debe admitir la versión 2.0 del servicio de datos OData, lo que se indica especificando los encabezados DataServiceVersion o MaxDataServiceVersion como sigue:

DataServiceVersion: 2.0;NetFx
MaxDataServiceVersion: 2.0;NetFx

En el ejemplo siguiente se muestra cómo proyectar las propiedades de una sola entidad utilizando el inicializador de objeto necesario:

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

En el ejemplo siguiente se proyectan 3 de las 10 propiedades de una entidad. En este ejemplo, las 10 propiedades de SampleEntity son las letras de la A a la 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
                                      };

No se admite la proyección de una sola entidad. La solicitud REST generada mediante el código siguiente no es válida:

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

También puede proyectar las propiedades de una entidad con la opción de consulta $select en una solicitud REST estándar. Para obtener más información, vea Query Entities.

Para obtener más información acerca de las proyecciones y transformación de entidad, vea Seleccionar opción de consulta de sistema ($select) en la documentación OData.

Para devolver n entidades, utilice el operador LINQ Take. Tenga en cuenta que el número máximo de entidades que se puede devolver en una consulta única es 1.000. Si se especifica un valor mayor que 1.000 para el operador Take, se produce el código de error 400 (Solicitud incorrecta).

En el ejemplo siguiente se devuelven las 10 primeras entidades de una tabla denominada Customers:

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

En el ejemplo siguiente se filtra según dos propiedades de cadena:

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

En el ejemplo siguiente se obtienen las coincidencias con prefijos mediante operadores de comparación que devuelven las entidades cuya propiedad LastName empiece por la letra “A”:

var query = from entity in context.CreateQuery<Customer>("CustomersA")
                 where entity.LastName.CompareTo("A") >= 0
                 && entity.LastName.CompareTo("B") < 0
                 select entity;

En el ejemplo siguiente se devuelven todas las entidades cuya propiedad Age tiene un valor mayor que 30:

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

Este ejemplo devuelve todas las entidades que tienen una propiedad AmountDue cuyo valor es menor o igual que 100.25:

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

El ejemplo siguiente devuelve todas las entidades cuya propiedad IsActive está establecida en true:

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

El ejemplo siguiente devuelve las entidades cuya propiedad CustomerSince es igual al 10 de julio 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;

Vea también

¿Te ha resultado útil?
(Caracteres restantes: 1500)
Gracias por sus comentarios
Mostrar:
© 2015 Microsoft