Rules engine dynamic type casting
Just a quick shot at case "Greater Than":  


case "Greater Than":
    if (fieldTypeName == "int")
    {
        var one = Convert.ToInt32(givenValue);
        var two = Convert.ToInt32(expectedValue);
        return one &gt; two;
    }
    if (fieldTypeName == "double")
    {
        var one = Convert.ToDouble(givenValue);
        var two = Convert.ToDouble(givenValue); 
        return one &gt; two;
    }
    return false;  



if fieldTypeName is double it is always returning false because copy&amp;pasta should be done carefully. This applies to Less Than as well.