你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Container.GetItemLinqQueryable<T> 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
此方法为 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}。
示例
- 以下示例显示了 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
}
- 以下示例演示了使用 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 () 并执行异步执行。