C# Azure表随机返回空值

C# Azure表随机返回空值,c#,.net,azure,azure-table-storage,C#,.net,Azure,Azure Table Storage,我有C#中的下一段代码: 这使得对Azure表进行查询。此表包含20000多个实体。问题是,变量ev有时有空值,有时有实体对象。这是随机发生的。我知道对象存在于表中,所以空值是错误的行为。为什么会这样?谢谢大家! 尝试results.AsTableServiceQuery().FirstOrDefault()。如果这样做行得通,问题是查询返回了一个延续令牌,表示有更多数据,但您没有发出后续查询来跟随该延续令牌并获取其余数据。您应该始终使用AsTableServiceQuery()免费获取以下连续

我有C#中的下一段代码:


这使得对Azure表进行查询。此表包含20000多个实体。问题是,变量ev有时有空值,有时有实体对象。这是随机发生的。我知道对象存在于表中,所以空值是错误的行为。为什么会这样?谢谢大家!

尝试
results.AsTableServiceQuery().FirstOrDefault()
。如果这样做行得通,问题是查询返回了一个延续令牌,表示有更多数据,但您没有发出后续查询来跟随该延续令牌并获取其余数据。您应该始终使用
AsTableServiceQuery()
免费获取以下连续令牌。

请尝试:

results.take(1).AsTableServiceQuery().execute().firstOrDefault() 
您遇到的问题是由
firstordefault
将查询转换为错误类型引起的


take 1仅要求azure提供1行,以提高您的
第一个默认值的效率。如果问题仍然存在,请尝试:

results.AsTableServiceQuery().Take(1).ToArray().FirstOrDefault()
我也遇到过类似的问题,这个解决方案对我很有效。当找到结果实体或未返回任何延续标记时,此查询跟随延续标记


results.AsTableServiceQuery().FirstOrDefault()也应该跟随continuation标记,但它不这样做。这是一种奇怪的行为,也会影响First()、Single()和SingleOrDefault()。在所有这些情况下,显式地期望单个实体,而不遵循延续标记。只有当结果预期是一个集合时,才会这样做。

在WAT上阅读,它是非常一致的,因此您报告的行为向我暗示,您的输入对于返回null的情况是不好的。mmmm nop。数值还可以,谢谢。非常感谢!但我仍然不知道为什么这种行为是随机的。也许存储并不总是以相同的顺序返回实体集?对存储的查询的形式为:((PartitionKey eq'000000000 5-0000016771')和(EventType eq'MyEcent'))Azure表始终以PK/RK顺序返回。如果您没有同时指定PK和RK,那么对Azure表的任何查询都可以返回包含任意数据量的延续令牌。这意味着您可以得到一个响应,该响应没有返回值,但带有一个延续令牌。在这种情况下,服务器认为处理请求花费的时间太长,因此它会向客户端返回一些内容,而不是让它超时;我发现这个信息非常有趣,但坏消息是:(,我尝试过:var ev=results.FirstOrDefault();var ev2=results.AsTableServiceQuery().FirstOrDefault();这两个变量仍然随机获得空值。Fiddler(www.fiddler2.com)是你的朋友。如果你能重现这个问题(空值)在Fiddler中捕获流量时,您可以准确地看到从表存储返回的内容。这通常有助于了解发生了什么。可以尝试
结果。FirstOrDefault().AsTableServiceQuery()
results.AsTableServiceQuery().Take(1).ToArray().FirstOrDefault()