public static bool version_compare(string version1, string version2, string op)
{
var compare = version_compare(version1, version2);
switch (op)
{
case "<":
case "lt": return compare < 0;
case "<=":
case "le": return compare <= 0;
case ">":
case "gt": return compare > 0;
case ">=":
case "ge": return compare >= 0;
case "==":
case "=":
case "eq": return compare == 0;
case "!=":
case "<>":
case "ne": return compare != 0;
}
throw new ArgumentException(); // TODO: return NULL
}