LINQ查询在DocumentDB上使用Any进行子集合的问题

时间:2016-07-08 21:30:43

标签: azure-cosmosdb

使用v1.8 .Net SDK

尝试返回Sales,其中Sale客户端数组包含我正在查找的客户端ID。

Sales.Where(sale => sale.Clients.Any(c => c.ClientId == clientID));

返回错误 “可以为空的对象必须有一个值。”

at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions) 在System.Threading.Tasks.Task 1.GetResultCore(Boolean waitCompletionNotification) at System.Threading.Tasks.Task 1.get_Result() 在Microsoft.Azure.Documents.Linq.DocumentQuery 1.GetEnumerator() at System.Collections.Generic.List 1..ctor(IEnumerable 1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable 1来源)

ClientID是一个GUID,但尝试查询客户端对象上的任何属性都会返回相同的错误。

如果我对同一数据运行相同的查询但只使用List集合(即不使用DocumentDB),则一切正常。

任何建议表示赞赏。 感谢

1 个答案:

答案 0 :(得分:12)

此查询可以使用SelectMany + Where:

进行处理
Sales.SelectMany(s => s.Clients.Where(c => c.ClientID == clientID).Select(c => s));