在 DocumentDB 上使用 Any 进行子集合的 LINQ 查询问题
LINQ Query Issue with using Any on DocumentDB for child collection
使用 v1.8 .Net SDK
尝试 return 销售,其中 Sale 客户数组包含我要查找的客户 ID。
Sales.Where(sale => sale.Clients.Any(c => c.ClientId == clientID));
Returns 错误
"Nullable object must have a value."
at System.Threading.Tasks.Task.ThrowIfExceptional(布尔值 includeTaskCanceledExceptions)
在 System.Threading.Tasks.Task1.GetResultCore(Boolean waitCompletionNotification)
at System.Threading.Tasks.Task
1.get_Result()
在 Microsoft.Azure.Documents.Linq.DocumentQuery1.GetEnumerator()
at System.Collections.Generic.List
1..ctor(IEnumerable1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable
1 来源)
ClientID 是一个 GUID,但尝试查询任何 属性 客户端对象 return 都会出现同样的错误。
如果我 运行 对相同数据进行相同的查询,但只使用列表集合(即不使用 DocumentDB),那么一切都很好。
任何建议表示赞赏。
谢谢
这个查询也可以使用 SelectMany + Where:
Sales.SelectMany(s => s.Clients.Where(c => c.ClientID == clientID).Select(c => s));
使用 v1.8 .Net SDK
尝试 return 销售,其中 Sale 客户数组包含我要查找的客户 ID。
Sales.Where(sale => sale.Clients.Any(c => c.ClientId == clientID));
Returns 错误 "Nullable object must have a value."
at System.Threading.Tasks.Task.ThrowIfExceptional(布尔值 includeTaskCanceledExceptions)
在 System.Threading.Tasks.Task1.GetResultCore(Boolean waitCompletionNotification)
at System.Threading.Tasks.Task
1.get_Result()
在 Microsoft.Azure.Documents.Linq.DocumentQuery1.GetEnumerator()
at System.Collections.Generic.List
1..ctor(IEnumerable1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable
1 来源)
ClientID 是一个 GUID,但尝试查询任何 属性 客户端对象 return 都会出现同样的错误。
如果我 运行 对相同数据进行相同的查询,但只使用列表集合(即不使用 DocumentDB),那么一切都很好。
任何建议表示赞赏。 谢谢
这个查询也可以使用 SelectMany + Where:
Sales.SelectMany(s => s.Clients.Where(c => c.ClientID == clientID).Select(c => s));