public virtual int GetIndex(DateTime datetime, IndexOption option = IndexOption.Null)
{
int num = 0;
int num2 = 0;
int num3 = (int)this.series.Count - 1;
bool flag = true;
while (flag)
{
if (num3 < num2)
{
return -1;
}
num = (num2 + num3) / 2;
switch (option)
{
case IndexOption.Null:
if (this.series[(long)num].DateTime == datetime)
{
flag = false;
}
else if (this.series[(long)num].DateTime > datetime)
{
num3 = num - 1;
}
else if (this.series[(long)num].DateTime < datetime)
{
num2 = num + 1;
}
break;
case IndexOption.Next:
if (this.series[(long)num].DateTime >= datetime && (num == 0 || this.series[(long)(num - 1)].DateTime < datetime))
{
flag = false;
}
else if (this.series[(long)num].DateTime < datetime)
{
num2 = num + 1;
}
else
{
num3 = num - 1;
}
break;
case IndexOption.Prev:
if (this.series[(long)num].DateTime <= datetime && ((long)num == this.series.Count - 1L || this.series[(long)(num + 1)].DateTime > datetime))
{
flag = false;
}
else if (this.series[(long)num].DateTime > datetime)
{
num3 = num - 1;
}
else
{
num2 = num + 1;
}
break;
}
}
return num;
}