Partager via


Container.GetItemLinqQueryable<T> Méthode

Définition

Cette méthode crée une requête LINQ pour les éléments sous un conteneur dans un service Azure Cosmos DB. La méthode d’extension IQueryable ToFeedIterator() doit être utilisée pour l’exécution asynchrone avec FeedIterator. Reportez-vous à l’exemple 2.

public abstract System.Linq.IOrderedQueryable<T> GetItemLinqQueryable<T> (bool allowSynchronousQueryExecution = false, string continuationToken = default, Microsoft.Azure.Cosmos.QueryRequestOptions requestOptions = default, Microsoft.Azure.Cosmos.CosmosLinqSerializerOptions linqSerializerOptions = default);
abstract member GetItemLinqQueryable : bool * string * Microsoft.Azure.Cosmos.QueryRequestOptions * Microsoft.Azure.Cosmos.CosmosLinqSerializerOptions -> System.Linq.IOrderedQueryable<'T>
Public MustOverride Function GetItemLinqQueryable(Of T) (Optional allowSynchronousQueryExecution As Boolean = false, Optional continuationToken As String = Nothing, Optional requestOptions As QueryRequestOptions = Nothing, Optional linqSerializerOptions As CosmosLinqSerializerOptions = Nothing) As IOrderedQueryable(Of T)

Paramètres de type

T

Type d’objet à interroger.

Paramètres

allowSynchronousQueryExecution
Boolean

(Facultatif)option qui permet d’exécuter la requête de manière synchrone via IOrderedQueryable.

continuationToken
String

(Facultatif) Jeton de continuation dans le service Azure Cosmos DB.

requestOptions
QueryRequestOptions

(Facultatif) Options de la demande de requête d’élément.

linqSerializerOptions
CosmosLinqSerializerOptions

(Facultatif) Options permettant de configurer les propriétés du sérialiseur Linq. Cela remplace les propriétés dans CosmosSerializerOptions lors de la création du client

Retours

(Facultatif) IOrderedQueryable{T} qui peut évaluer la requête.

Exemples

  1. Cet exemple ci-dessous montre la génération de requêtes LINQ et l’exécution bloquée.
public class Book 
{
    public string Title {get; set;}

    public Author Author {get; set;}

    public int Price {get; set;}
}

public class Author
{
    public string FirstName {get; set;}
    public string LastName {get; set;}
}

// Query by the Title property
Book book = container.GetItemLinqQueryable<Book>(true)
                     .Where(b => b.Title == "War and Peace")
                     .AsEnumerable()
                     .FirstOrDefault();

// Query a nested property
Book otherBook = container.GetItemLinqQueryable<Book>(true)
                          .Where(b => b.Author.FirstName == "Leo")
                          .AsEnumerable()
                          .FirstOrDefault();

// Perform iteration on books
foreach (Book matchingBook in container.GetItemLinqQueryable<Book>(true)
                           .Where(b => b.Price > 100))
{
    // Iterate through books
}
  1. Cet exemple ci-dessous montre la génération de requêtes LINQ et l’exécution asynchrone avec FeedIterator.

// LINQ query generation
using (FeedIterator<Book> setIterator = container.GetItemLinqQueryable<Book>()
                     .Where(b => b.Title == "War and Peace")
                     .ToFeedIterator())
{                   
    //Asynchronous query execution
    while (setIterator.HasMoreResults)
    {
        foreach(var item in await setIterator.ReadNextAsync())
        {
            Console.WriteLine(item.Price); 
        }
    }
}

Remarques

L’exécution LINQ est synchrone, ce qui entraîne des problèmes liés au blocage des appels. Il est recommandé de toujours utiliser ToFeedIterator() et d’effectuer l’exécution asynchrone.

S’applique à

Voir aussi