VENDITE: 1-800-867-1389

Scrittura di query LINQ nel servizio tabelle

Aggiornamento: agosto 2014

È possibile scrivere query nel servizio tabelle tramite la sintassi LINQ. Negli esempi seguenti viene illustrato come scrivere query di esempio simili a quelle visualizzate in Query di tabelle ed entità, ma utilizzando LINQ anziché il protocollo REST.

Il servizio tabelle supporta l'esecuzione di query semplici per recuperare tutte le proprietà di un'entità. Non è possibile selezionare un subset delle proprietà di un'entità. Il servizio tabelle consente anche di applicare filtri ai risultati delle query di filtro utilizzando l'operatore Where e di specificare il numero di entità che è possibile restituire utilizzando l'operatore Take.

Per informazioni dettagliate sugli operatori LINQ supportati dal servizio tabelle, vedere Operatori di query supportati per il servizio tabelle.

La clausola LINQ select può essere utilizzata per proiettare un subset di proprietà da una o più entità. Il numero massimo di proprietà che è possibile proiettare è 255, che è anche il numero massimo di proprietà di un'entità.

Per proiettare le proprietà di un'entità, il client deve supportare OData Data Service versione 2.0, indicata specificando l'intestazione DataServiceVersion o MaxDataServiceVersion nel modo seguente:

DataServiceVersion: 2.0;NetFx
MaxDataServiceVersion: 2.0;NetFx

Nell'esempio seguente viene illustrato come proiettare le proprietà da una singola entità, utilizzando l'inizializzatore di oggetto necessario:

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

Nell'esempio seguente vengono proiettate 3 proprietà da un'entità con 10 proprietà. In questo esempio, le 10 proprietà di SampleEntity sono le lettere dalla A alla 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 proiezione di una singola entità non è supportata. La richiesta REST generata dal codice seguente non è valida:

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

È inoltre possibile proiettare le proprietà di un'entità tramite l'opzione di query $select in una richiesta REST standard. Per altre informazioni, vedere Query Entities.

Per ulteriori informazioni sulle trasformazioni e le proiezioni di entità, vedere la pagina relativa all'opzione query di sistema Select ($select) nella documentazione di OData.

Per restituire n entità, utilizzare l'operatore LINQ Take. Tenere presente che il numero massimo di entità che possono essere restituite in una singola query è 1000. Se si specifica un valore maggiore di 1000 per l'operatore Take, viene restituito il codice di errore 400 (Richiesta non valida).

Nell'esempio seguente vengono restituite le prime 10 entità da una tabella Customers:

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

Nell'esempio seguente vengono applicati filtri su due proprietà String:

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

Nell'esempio seguente viene eseguita la corrispondenza dei prefissi utilizzando gli operatori di confronto per restituire le entità con una proprietà LastName che inizia con la lettera "A":

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

Nell'esempio seguente vengono restituite tutte le entità con una proprietà Age il cui valore è maggiore di 30:

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

In questo esempio vengono restituite tutte le entità con una proprietà AmountDue il cui valore è minore o uguale a 100,25:

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

Nell'esempio seguente vengono restituite tutte le entità per le quali la proprietà IsActive è impostata su true:

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

Nell'esempio seguente vengono restituite le entità per le quali la proprietà CustomerSince è uguale a 10 luglio 2008:

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

Vedere anche

Il documento è risultato utile?
(1500 caratteri rimanenti)
Grazie per i commenti inviati.
Microsoft sta conducendo un sondaggio in linea per comprendere l'opinione degli utenti in merito al sito Web di MSDN. Se si sceglie di partecipare, quando si lascia il sito Web di MSDN verrà visualizzato il sondaggio in linea.

Si desidera partecipare?
Mostra:
© 2015 Microsoft