Enum conversion to Enumeration class with small Business Logic inside
Shouldn't the 'IsValid' method be static? I suppose you use it like Rule.IsValid(calculatedCompensation, 0, Rule.CompensationIsZero.Id), (as general idea, obviously it can be simplified).

Anyway PERSONALLY I would not do this, because Rule is no more an Enum, you gave it logic, that usually Enum don't have. I would have keep the Enum as original and built on top of that a Class with the required logic. (Maybe called RuleValidator with a static method public static bool IsValid(Rule rule, decimal compensation, decimal demand) {...}.

If this does not concern you, than another way could be to write an extension method:

static class RuleExtensions 
{
  public static bool Validate(this Rule rule, decimal compensation, decimal demand) 
  {
    switch (rule) 
    {
      case None: return true;
      case CompensationIsZero: return compensation == 0;
      case CompensationLessThanDemand : return compensation &lt; demand;
      // ecc...
    }
  }
}