Share via


Container.GetItemLinqQueryable<T> Método

Definición

Este método crea una consulta LINQ para los elementos de un contenedor en un servicio de Azure Cosmos DB. El método de extensión IQueryable ToFeedIterator() debe usarse para la ejecución asincrónica con FeedIterator, consulte el ejemplo 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

Tipo de objeto que se va a consultar.

Parámetros

allowSynchronousQueryExecution
Boolean

(Opcional) la opción que permite que la consulta se ejecute de forma sincrónica a través de IOrderedQueryable.

continuationToken
String

(Opcional) Token de continuación en el servicio Azure Cosmos DB.

requestOptions
QueryRequestOptions

(Opcional) Las opciones de la solicitud de consulta de elemento.

linqSerializerOptions
CosmosLinqSerializerOptions

(Opcional) Las opciones para configurar las propiedades del serializador linq. Esto invalida las propiedades de CosmosSerializerOptions al crear el cliente.

Devoluciones

(Opcional) IOrderedQueryable{T} que puede evaluar la consulta.

Ejemplos

  1. En este ejemplo se muestra la generación de consultas LINQ y la ejecución 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. En este ejemplo se muestra la generación de consultas LINQ y la ejecución asincrónica con 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); 
        }
    }
}

Comentarios

La ejecución de LINQ es sincrónica, lo que provocará problemas relacionados con el bloqueo de llamadas. Se recomienda usar siempre ToFeedIterator() y realizar la ejecución asincrónica.

Se aplica a

Consulte también