我有一个Windows Azure表,叫做ChannelsVideos,它已被非规范化以同时保存通道和视频。该partitionKey由类别和频道的标题像这样的:Windows Azure Table CompareTo不能正常工作
业务,有些频道标题 宗教其他渠道标题
我使用了“ - ”字符分隔。
我有一个Kind属性,它是Channel或Video来指示“行”是频道还是视频条目。
我遇到的问题是试图计算特定用户的频道数量。我有一个像这样的陈述:
return (from g in tableServiceContext.CreateQuery<ChannelVideoEntity>(Enums.Tables.ChannelsVideos.ToString())
where g.PartitionKey.CompareTo(categoryAndUser.CategoryID + "-") >= 0
&& g.Kind.Equals(Enums.TableKinds.Channel.ToString())
&& g.UserID.Equals(categoryAndUser.Key)
select g).AsTableServiceQuery().Execute().Count();
实际发生的事情是,频道的视频也被计算在内。这是为什么?因此,例如,如果我创建一个频道并向其中添加4个视频,则从上述语句返回的频道数为5个。因为它会计算频道,然后统计与该频道关联的4个视频。我只想要的是应该是1的通道数。
我在做什么或不做什么都看不到?我是否正确使用compareTo,应该如何使用它?
嗨汤姆感谢您的意见。不幸的是,你提出的方法是事后。我想要做的就是让Azure表执行所有查找与查询相匹配的记录并返回它们的工作。换句话说,我希望在返回结果之前发生不同的部分。 – 2012-02-27 21:46:57