查询 rowkey 大于 azure table 存储
query rowkey with greater than in azure table storage
我使用此 link 和引用的白皮书来对插入 table 存储的数据进行排序。 'entities' 存储有这个简化的 'schema':
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();
}
}
我可以很容易地得到按 rowkey 升序排序的 '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();
我有这个用例,我想 select rowkey 大于 long 的任何实体(rowkey 只是 ticks - long 表示为字符串)。所以我尝试了这个:
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。有什么想法吗?
我认为您的查询存在问题,因为您在比较不同的类型。即带有长时间戳的字符串 rowkey。
应该工作的 linq 查询是:
from entry in table
where entry.RowKey.CompareTo("635919954373048408") >= 0
select entry
我使用此 link 和引用的白皮书来对插入 table 存储的数据进行排序。 'entities' 存储有这个简化的 'schema':
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();
}
}
我可以很容易地得到按 rowkey 升序排序的 '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();
我有这个用例,我想 select rowkey 大于 long 的任何实体(rowkey 只是 ticks - long 表示为字符串)。所以我尝试了这个:
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。有什么想法吗?
我认为您的查询存在问题,因为您在比较不同的类型。即带有长时间戳的字符串 rowkey。
应该工作的 linq 查询是:
from entry in table
where entry.RowKey.CompareTo("635919954373048408") >= 0
select entry