public override byte[] FindKey(TKey key) { int nextResult = _records[0].Key.CompareTo(key); int idx = 0; while (idx < _records.Length) { int thisResult = nextResult; if (idx + 1 < _records.Length) { nextResult = _records[idx + 1].Key.CompareTo(key); } else { nextResult = 1; } if (thisResult > 0) { // This record's key is too big, so no chance further records // will match. return(null); } if (nextResult > 0) { // Next record's key is too big, so worth looking at children BTreeKeyedNode <TKey> child = ((BTree <TKey>)Tree).GetKeyedNode(_records[idx].ChildId); return(child.FindKey(key)); } idx++; } return(null); }
public byte[] Find(TKey key) { return(_rootNode == null ? null : _rootNode.FindKey(key)); }