Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Escribir consultas LINQ con el servicio Tabla

 

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 muestra en Consultar tablas y entidades, pero con LINQ en lugar del 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 la Where operador y especificar el número de entidades que se devolverán utilizando el Take operador.

Para obtener más información acerca de LINQ se admiten los operadores por el servicio de la tabla, vea Operadores de consulta admitidos para el servicio Tabla.

LINQ select cláusula puede usarse para proyectar un subconjunto de las propiedades de una entidad o 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 la entidad, el cliente debe admitir la versión 2.0, indicado mediante la especificación del servicio de datos de OData el DataServiceVersion o MaxDataServiceVersion encabezados 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, SampleEntityde 10 propiedades son las letras de la 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 entidad utilizando la $select opción en una solicitud REST estándar de consulta. Para obtener más información, vea Query Entities.

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

Para devolver n entidades, utilice LINQ Take operador. Tenga en cuenta que en una sola consulta se pueden devolver un máximo de 1.000 entidades. Especificar un valor mayor que 1.000 para el Take código de resultados de operador 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 realiza la coincidencia de prefijo mediante operadores de comparación para devolver las entidades con un LastName propiedad que 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;

El ejemplo siguiente devuelve todas las entidades con un Age propiedad cuyo valor es mayor que 30:

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

Este ejemplo devuelve todas las entidades con un AmountDue propiedad 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 donde el IsActive propiedad 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 donde el CustomerSince propiedad es igual a 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;
Mostrar: