.net OSS 表格存储简单分页查询

        /// <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);
        }
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章