Container.GetItemLinqQueryable<T> Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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
- 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
}
- 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
Azure SDK for .NET