Container.GetItemLinqQueryable<T> Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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
- 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
}
- 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
Azure SDK for .NET