public MetadataMember GetMemberByKey(int columnIndex, uint key)
{
if (Count == 0)
return null;
int left = 0;
int right = Count - 1;
while (left <= right)
{
int m = (left + right) / 2;
var member = GetMember(m);
uint current = Convert.ToUInt32(member.MetadataRow.GetAllColumns().ElementAt(columnIndex));
if (current > key)
right = m - 1;
else if (current < key)
left = m + 1;
else
return member;
}
return null;
}