public IDictionary<int, IList<IBinaryDataListItem>> FetchSortData()
{
IDictionary<int, IList<IBinaryDataListItem>> result = new Dictionary<int, IList<IBinaryDataListItem>>(Count);
IIndexIterator ii = Keys;
if(IsRecordset)
{
short colCnt = (short)Columns.Count;
while(ii.HasMore())
{
// TODO : What if they are in different locations?
IList<IBinaryDataListItem> tmp = new List<IBinaryDataListItem>(Columns.Count);
BinaryDataListRow row;
int next = ii.FetchNextIndex();
// Hi-jack lookup
StorageKey sk = new StorageKey(DataListKey, next + GenerateKeyPrefix(Namespace, DataListKey));
if(_itemStorage.TryGetValue(sk, colCnt, out row))
{
for(int i = 0; i < Columns.Count; i++)
{
tmp.Add(new BinaryDataListItem(row.FetchValue(i, colCnt), Namespace, Columns[i].ColumnName, next));
}
result[next] = tmp;
}
}
}
return result;
}