private static bool IsLogical(string filter, int i, out int length, bool previous = false)
{
bool isLogical = false;
length = 0;
if (i < filter.Length - 2)
{
string op = filter.Substring(i - (i >= 3 ? (previous ? 3 : 0) : 0), 2);
if (op == "&&" || op == "||" || op.Equals("or", StringComparison.InvariantCultureIgnoreCase))
{
isLogical = true;
length = 2;
}
}
if (!isLogical)
{
if (i < filter.Length - 3)
{
string op = filter.Substring(i - (i >= 4 ? (previous ? 4 : 0) : 0), 3);
if (op.Equals("and", StringComparison.InvariantCultureIgnoreCase))
{
isLogical = true;
length = 3;
}
}
}
return isLogical;
}