Container.GetItemLinqQueryable<T> Methode

Definition

Diese Methode erstellt eine LINQ-Abfrage für Elemente unter einem Container in einem Azure Cosmos DB-Dienst. Die IQueryable-Erweiterungsmethode ToFeedIterator() sollte für die asynchrone Ausführung mit FeedIterator verwendet werden. Siehe Beispiel 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)

Typparameter

T

Der Typ des abzufragenden Objekts.

Parameter

allowSynchronousQueryExecution
Boolean

(Optional)die Option, mit der die Abfrage synchron über IOrderedQueryable ausgeführt werden kann.

continuationToken
String

(Optional) Das Fortsetzungstoken im Azure Cosmos DB-Dienst.

requestOptions
QueryRequestOptions

(Optional) Die Optionen für die Elementabfrageanforderung.

linqSerializerOptions
CosmosLinqSerializerOptions

(Optional) Die Optionen zum Konfigurieren von Linq Serializer-Eigenschaften. Dadurch werden Eigenschaften in CosmosSerializerOptions beim Erstellen eines Clients außer Kraft gesetzt.

Gibt zurück

(Optional) Ein IOrderedQueryable{T}, das die Abfrage auswerten kann.

Beispiele

  1. Dieses folgende Beispiel zeigt die LINQ-Abfragegenerierung und die blockierte Ausführung.
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. Dieses folgende Beispiel zeigt die LINQ-Abfragegenerierung und die asynchrone Ausführung mit 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); 
        }
    }
}

Hinweise

DIE LINQ-Ausführung ist synchron, was Probleme im Zusammenhang mit dem Blockieren von Aufrufen verursacht. Es wird empfohlen, immer ToFeedIterator() zu verwenden und die asynchrone Ausführung auszuführen.

Gilt für:

Weitere Informationen