/// <summary>
///
/// </summary>
/// <param name="client"></param>
/// <param name="tableName"></param>
/// <param name="startKey"></param>
/// <param name="endKey"></param>
/// <param name="page">页码</param>
/// <param name="limit">每页显示条数</param>
/// <returns></returns>
private KeyValuePair<List<Row>, PrimaryKey> ReadByPage(OTSClient client,string tableName,PrimaryKey startKey,PrimaryKey endKey,int page,int limit)
{
List<Row> rows = new List<Row>(limit);
//需要跳过的数据条数
int skip = (page-1)*limit;
PrimaryKey nextStart = startKey;
while (limit>0 && nextStart !=null )
{
// 构造GetRange的查询参数。
// 注意:startPrimaryKey需要设置为上一次读到的位点,从上一次未读完的地方继续往下读,实现流式的范围查询。
RangeRowQueryCriteria criteria = new RangeRowQueryCriteria(tableName);
criteria.InclusiveStartPrimaryKey = nextStart;
criteria.ExclusiveEndPrimaryKey = endKey;
// 需要设置正确的limit,这里期望读出的数据行数最多为完整的一页数据以及需要过滤(offset)的数据
criteria.Limit=(skip + limit);
GetRangeRequest request = new GetRangeRequest(criteria);
GetRangeResponse response = client.GetRange(request);
foreach (var row in response.RowDataList)
{
if (skip > 0)
{
skip--;
}
else
{
rows.Add(row);
//var ff = row.AttributeColumns["clo5"];
limit--;
}
}
nextStart = response.NextPrimaryKey;
}
return new KeyValuePair<List<Row>, PrimaryKey>(rows,nextStart);
}
.net OSS 表格存储简单分页查询
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.