Compartilhar via


Container.GetItemLinqQueryable<T> Método

Definição

Esse método cria uma consulta LINQ para itens em um contêiner em um serviço do Azure Cosmos DB. O método de extensão IQueryable ToFeedIterator() deve ser usado para execução assíncrona com FeedIterator, consulte o exemplo 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)

Parâmetros de tipo

T

O tipo de objeto a ser consultado.

Parâmetros

allowSynchronousQueryExecution
Boolean

(Opcional)a opção que permite que a consulta seja executada de forma síncrona por meio de IOrderedQueryable.

continuationToken
String

(Opcional) O token de continuação no serviço do Azure Cosmos DB.

requestOptions
QueryRequestOptions

(Opcional) As opções para a solicitação de consulta de item.

linqSerializerOptions
CosmosLinqSerializerOptions

(Opcional) As opções para configurar as Propriedades do Serializador linq. Isso substitui as propriedades no CosmosSerializerOptions ao criar o cliente

Retornos

(Opcional) Um IOrderedQueryable{T} que pode avaliar a consulta.

Exemplos

  1. Este exemplo abaixo mostra a geração de consulta LINQ e a execução bloqueada.
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. Este exemplo abaixo mostra a geração de consulta LINQ e a execução assíncrona com 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); 
        }
    }
}

Comentários

A execução do LINQ é síncrona, o que causará problemas relacionados ao bloqueio de chamadas. É recomendável sempre usar ToFeedIterator() e executar a execução assíncrona.

Aplica-se a

Confira também