Share via


你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Container.GetItemLinqQueryable<T> 方法

定义

此方法为 Azure Cosmos DB 服务中的容器下的项创建 LINQ 查询。 IQueryable 扩展方法 ToFeedIterator () 应用于 FeedIterator 的异步执行,请参阅示例 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)

类型参数

T

要查询的对象的类型。

参数

allowSynchronousQueryExecution
Boolean

(Optional) 允许通过 IOrderedQueryable 同步执行查询的选项。

continuationToken
String

(可选) Azure Cosmos DB 服务中的延续令牌。

requestOptions
QueryRequestOptions

(可选) 项查询请求的选项。

linqSerializerOptions
CosmosLinqSerializerOptions

(可选) 用于配置 Linq 序列化程序属性的选项。 这会在创建客户端时替代 CosmosSerializerOptions 中的属性

返回

(可选) 可以计算查询的 IOrderedQueryable{T}。

示例

  1. 以下示例显示了 LINQ 查询生成和阻止的执行。
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. 以下示例演示了使用 FeedIterator 生成 LINQ 查询和异步执行。

// 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); 
        }
    }
}

注解

LINQ 执行是同步的,这将导致与阻止调用相关的问题。 建议始终使用 ToFeedIterator () 并执行异步执行。

适用于

另请参阅