public KeyValuePair <TKey, TValue>[] Decode <TKey, TValue>([NotNull] FdbSubspace subspace, [NotNull] IKeyEncoder <TKey> keyEncoder, [NotNull] IValueEncoder <TValue> valueEncoder) { if (subspace == null) { throw new ArgumentNullException("subspace"); } if (keyEncoder == null) { throw new ArgumentNullException("keyEncoder"); } if (valueEncoder == null) { throw new ArgumentNullException("valueEncoder"); } var chunk = this.Chunk; var results = new KeyValuePair <TKey, TValue> [chunk.Length]; for (int i = 0; i < chunk.Length; i++) { results[i] = new KeyValuePair <TKey, TValue>( keyEncoder.DecodeKey(subspace.ExtractKey(chunk[i].Key, boundCheck: true)), valueEncoder.DecodeValue(chunk[i].Value) ); } return(results); }
public T[] DecodeKeys <T>([NotNull] FdbSubspace subspace, [NotNull] IKeyEncoder <T> keyEncoder) { if (subspace == null) { throw new ArgumentNullException("subspace"); } if (keyEncoder == null) { throw new ArgumentNullException("keyEncoder"); } var results = new T[this.Count]; for (int i = 0; i < results.Length; i++) { results[i] = keyEncoder.DecodeKey(subspace.ExtractKey(this.Chunk[i].Key, boundCheck: true)); } return(results); }