查询大于天蓝色表存储的rowkey

时间:2016-02-25 13:10:41

标签: c# azure-table-storage azure-tablequery

我使用此link和引用的白皮书允许我对插入表存储中的数据进行排序。存储的“实体”具有此简化的“架构”:

public class Bla : TableEntity
{
    public Bla(){}

    public Bla(string partitionKey)
    {
        PartitionKey = partitionKey;

        // rowkey + partition = guid/pk
        // used to order blas
        RowKey = (DateTime.UtcNow.Ticks - DateTime.MinValue.Ticks).ToString();
    }
}

我很容易得到一个'page'(最大页面大小1000),按行排序,如下:

var query =
(from s in _table.CreateQuery<Bla>()
where
s.PartitionKey == _partitionKey &&
string.Compare(s.RowKey, rowKeyToUse, StringComparison.Ordinal) > 0 
select s).AsTableQuery();

我有这个用例,我想选择rowkey大于long的任何实体(rowkey只是ticks - 长表示为字符串)。所以我尝试了这个:

var query =
(from s in _table.CreateQuery<Bla>()
where
s.PartitionKey == _partitionKey &&
s.RowKey.CompareTo(635919954373048408) > 0 &&
string.Compare(s.RowKey, rowKeyToUse, StringComparison.Ordinal) > 0 
select s).AsTableQuery();

但我得到了404.有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我认为您的查询存在的问题是您正在比较不同的类型。即带有长时间戳的字符串rowkey。

应该有效的linq查询是:

from entry in table 
where entry.RowKey.CompareTo("635919954373048408") >= 0 
select entry