public static SqlBoolean operator <=(SqlDecimal x, SqlDecimal y)
{
if (x.IsNull || y.IsNull)
{
return(SqlBoolean.Null);
}
if (x.IsPositive != y.IsPositive)
{
return(new SqlBoolean(y.IsPositive));
}
if (x.Scale > y.Scale)
{
y = SqlDecimal.AdjustScale(y, x.Scale - y.Scale, true);
}
else if (y.Scale > x.Scale)
{
x = SqlDecimal.AdjustScale(x, y.Scale - x.Scale, true);
}
for (int i = 3; i >= 0; i -= 1)
{
if (x.Data[i] == 0 && y.Data[i] == 0)
{
continue;
}
else
{
return(new SqlBoolean(x.Data[i] <= y.Data[i]));
}
}
return(new SqlBoolean(true));
}