public override DataObject Evaluate(DataObject ob1, DataObject ob2, IGroupResolver group, IVariableResolver resolver, IQueryContext context) { bool?b1 = ob1.ToBoolean(); bool?b2 = ob2.ToBoolean(); // If either ob1 or ob2 are null if (!b1.HasValue) { return(b2.HasValue && b2.Equals(false) ? DataObject.BooleanFalse : DataObject.BooleanNull); } if (!b2.HasValue) { return(b1.Equals(false) ? DataObject.BooleanFalse : DataObject.BooleanNull); } // If both true. return(DataObject.Boolean(b1.Equals(true) && b2.Equals(true))); }