Exporter (0) Imprimer
Développer tout

Écriture de requêtes LINQ sur le service de Table

Mis à jour: février 2014

Vous pouvez écrire des requêtes sur le service de Table à l'aide de la syntaxe LINQ. Les exemples suivants montrent comment écrire des exemples de requêtes similaires aux exemples de requêtes indiqués dans Interrogation de tables et d'entités, mais en utilisant LINQ plutôt que le protocole REST.

Le service de Table prend en charge l'exécution de requêtes simples qui récupèrent toutes les propriétés d'une entité ; il n'est pas possible de sélectionner un sous-ensemble des propriétés d'une entité. Le service de Table prend également en charge le filtrage des résultats de requête en utilisant l'opérateur Where, et en spécifiant le nombre d'entités à retourner à l'aide de l'opérateur Take.

Pour plus d'informations sur les opérateurs LINQ pris en charge par le service de Table, consultez Opérateurs de requête pris en charge pour le service de Table.

La clause LINQ select peut être utilisée pour projeter un sous-ensemble de propriétés d'une entité ou d'entités. Le nombre maximal de propriétés qui peuvent être projetées est de 255, ce qui est également le nombre maximal de propriétés dans une entité.

Pour projeter les propriétés d'une entité, le client doit prendre en charge la version 2.0 du service de données OData, indiquée en spécifiant les en-têtes DataServiceVersion ou MaxDataServiceVersion comme suit :

DataServiceVersion: 2.0;NetFx
MaxDataServiceVersion: 2.0;NetFx

L'exemple suivant montre comment projeter des propriétés de projet à partir d'une seule entité, à l'aide de l'initialiseur d'objet requis :

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

L'exemple suivant projette 3 propriétés à partir d'une entité qui a 10 propriétés. Dans cet exemple, les 10 propriétés de SampleEntity sont des lettres de 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
                                      };

La projection d'une seule entité n'est pas prise en charge. La demande REST produite par le code suivant n'est pas valide :

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

Vous pouvez également projeter des propriétés d'entités à l'aide de l'option de requête $select dans une requête REST standard. Pour plus d'informations, consultez Query Entities (API REST).

Pour plus d'informations sur les projections et les transformations d'entité, consultez Option de requête système Select ($select) dans la documentation OData.

Pour retourner n entités, utilisez l'opérateur LINQ Take. Notez que le nombre maximal d'entités qui peuvent être retournées dans une même requête est de 1 000. La spécification d'une valeur supérieure à 1 000 pour l'opérateur Take entraîne un code d'erreur 400 (Demande incorrecte).

L'exemple suivant retourne les 10 premières entités d'une table appelée Customers :

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

L'exemple suivant filtre sur deux propriétés de chaîne :

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

L'exemple suivant exécute la mise en correspondance de préfixe en utilisant les opérateurs de comparaison pour retourner des entités avec une propriété LastName commençant par la lettre « A » :

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

L'exemple suivant retourne toutes les entités avec une propriété Age dont la valeur est supérieure à 30 :

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

Cet exemple retourne toutes les entités avec une propriété AmountDue dont la valeur est inférieure ou égale à 100,25 :

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

L'exemple suivant retourne toutes les entités pour lesquelles la propriété IsActive a la valeur true :

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

L'exemple suivant retourne les entités pour lesquelles la propriété CustomerSince est égale au 10 juillet 2008 :

DateTime dt = new DateTime(2008, 7, 10);
var query = from entity in context.CreateQuery<Customer>("CustomerSince")
                 where entity.CustomerSince.Equals(dt)
                 select entity;

Voir aussi

Afficher:
© 2014 Microsoft