Container.GetItemLinqQueryable<T> Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
- 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
}
- 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
Azure SDK for .NET