// Nullify.cs Utility Class by David Pinch // http://www.thoughtproject.com/snippets/Nullify/ // Injected into the public domain. // // Conventions: // // 1. Each static method examines a value and either returns DBNull.Value or the value itself. // 2. Each method is named after the data type as it appears in the System namespace. // 3. Most methods have overloads for value types and nullable types. // 4. The value parameter is always the first parameter. // 5. Most methods have overloads for specifying a value that is treated as null (e.g. 0). // // History: // // 1.1: Fixed bug in .Guid(value) using System; namespace Thought.Data { /// /// Translates various values into DBNull.Value. /// public static class Nullify { /// /// Returns DBNull.Value if a nullable Boolean is null. /// public static object Boolean(bool? value) { if (value == null) { return DBNull.Value; } else { return value.Value; } } /// /// Returns DBNull.Value if a Boolean is null or matches a reserved value. /// public static object Boolean(bool? value, bool treatedAsNull) { if ((value == null) || (value.Value == treatedAsNull)) { return DBNull.Value; } else { return value.Value; } } /// /// Returns DBNull.Value if a byte array is null. /// public static object ByteArray(byte[] value) { if (value == null) { return DBNull.Value; } else { return value; } } /// /// Returns DBNull.Value if a DateTime is the minimum possible date. /// public static object DateTime(DateTime value) { if (value == System.DateTime.MinValue) { return DBNull.Value; } else { return value; } } /// /// Returns DBNull.Value if a DateTime matches a reserved value. /// public static object DateTime(DateTime value, DateTime treatedAsNull) { if (value == treatedAsNull) { return DBNull.Value; } else { return value; } } /// /// Returns DBNull.Value if a DateTime is null. /// public static object DateTime(DateTime? value) { if (value == null) { return DBNull.Value; } else { return value.Value; } } /// /// Returns DBNull.Value if a DateTime is null or matches a reserved value. /// public static object DateTime(DateTime? value, DateTime treatedAsNull) { if ((value == null) || (value == treatedAsNull)) { return DBNull.Value; } else { return value.Value; } } /// /// Returns DBNull.Value if a decimal is 0. /// public static object Decimal(decimal value) { if (value == 0) { return DBNull.Value; } else { return value; } } /// /// Returns DBNull.Value if a decimal matches a reserved value. /// public static object Decimal(decimal value, decimal treatedAsNull) { if (value == treatedAsNull) { return DBNull.Value; } else { return value; } } /// /// Returns DBNull.Value if a nullable Decimal is null. /// public static object Decimal(decimal? value) { if (value == null) { return DBNull.Value; } else { return value.Value; } } /// /// Returns DBNull.Value if a Decimal is null or matches a reserved value. /// public static object Decimal(decimal? value, decimal treatedAsNull) { if((value == null)||(value == treatedAsNull)) { return DBNull.Value; } else { return value.Value; } } /// /// Returns DBNull.Value if a Double is 0.0. /// public static object Double(Double value) { if (value == 0.0) { return DBNull.Value; } else { return value; } } /// /// Returns DBNull.Value if a Double matches a reserved value. /// public static object Double(Double value, Double treatedAsNull) { if (value == treatedAsNull) { return DBNull.Value; } else { return value; } } /// /// Returns DBNull.Value if a double is null. /// public static object Double(double? value) { if (value == null) { return DBNull.Value; } else { return value.Value; } } /// /// Returns DBNull.Value if a Double is null or matches a reserved value. /// public static object Double(Double? value, Double treatedAsNull) { if ( (value == null) || (value.Value == treatedAsNull)) { return DBNull.Value; } else { return value.Value; } } /// /// Returns DBNull.Value if a Guid is empty. /// public static object Guid(Guid value) { if (value == System.Guid.Empty) { return DBNull.Value; } else { return value; } } /// /// Returns DBNull.Value if a Guid matches a reserved value. /// public static object Guid(Guid value, Guid treatedAsNull) { if (value == treatedAsNull) { return DBNull.Value; } else { return value; } } /// /// Returns DBNull.Value if a Guid is null. /// public static object Guid(Guid? value) { if (value == null) { return DBNull.Value; } else { return value.Value; } } /// /// Returns DBNull.Value if a nullable Guid is null or matches a reserved value. /// public static object Guid(Guid? value, Guid treatedAsNull) { if ((value == null) || (value.Value == treatedAsNull)) { return DBNull.Value; } else { return value.Value; } } /// /// Returns DBNull.Value if an Int16 is zero. /// public static object Int16(short value) { if (value == 0) { return DBNull.Value; } else { return value; } } /// /// Returns DBNull.Value if an Int16 matches a reserved value. /// public static object Int16(short value, short treatedAsNull) { if (value == treatedAsNull) { return DBNull.Value; } else { return value; } } /// /// Returns DBNull.Value if an Int16 is null. /// public static object Int16(short? value) { if (value == null) { return DBNull.Value; } else { return value.Value; } } /// /// Returns DBNull.Value if an Int16 is null or matches a reserved value. /// public static object Int16(short? value, short treatedAsNull) { if ((value == null) || (value.Value == treatedAsNull)) { return DBNull.Value; } else { return value.Value; } } /// /// Returns DBNull.Value if an Int32 is zero. /// public static object Int32(int value) { if (value == 0) { return DBNull.Value; } else { return value; } } /// /// Returns DBNull.Value if an Int32 matches a reserved value. /// public static object Int32(int value, int treatedAsNull) { if (value == treatedAsNull) { return DBNull.Value; } else { return value; } } /// /// Returns DBNull.Value if an Int32 is null. /// public static object Int32(int? value) { if (value == null) { return DBNull.Value; } else { return value.Value; } } /// /// Returns DBNull.Value if an Int32 is null or matches a reserved value. /// public static object Int32(int? value, int treatedAsNull) { if ((value == null) || (value.Value == treatedAsNull)) { return DBNull.Value; } else { return value.Value; } } /// /// Returns DBNull.Value if an Int64 is zero. /// public static object Int64(Int64 value) { if (value == 0) { return DBNull.Value; } else { return value; } } /// /// Returns DBNull.Value if an Int64 matches a reserved value. /// public static object Int64(Int64 value, Int64 treatedAsNull) { if (value == treatedAsNull) { return DBNull.Value; } else { return value; } } /// /// Returns DBNull.Value if a nullable Int64 is null. /// public static object Int64(Int64? value) { if (value == null) { return DBNull.Value; } else { return value.Value; } } /// /// Returns DBNull.Value if a nullable Int64 is null or matches a reserved value. /// public static object Int64(Int64? value, Int64 treatedAsNull) { if ((value == null) || (value.Value == treatedAsNull)) { return DBNull.Value; } else { return value.Value; } } /// /// Returns DBNull.Value if a Single is 0.0. /// public static object Single(float value) { if (value == 0.0) { return DBNull.Value; } else { return value; } } /// /// Returns DBNull.Value if a single matches a reserved value. /// public static object Single(float value, float treatedAsNull) { if (value == treatedAsNull) { return DBNull.Value; } else { return value; } } /// /// Returns DBNull.Value if a nullable Single is null. /// public static object Single(float? value) { if (value == null) { return DBNull.Value; } else { return value.Value; } } /// /// Returns DBNull.Value if a Single is null or matches a reserved value. /// public static object Single(float? value, float treatedAsNull) { if ((value == null) || (value.Value == treatedAsNull)) { return DBNull.Value; } else { return value.Value; } } /// /// Returns DBNull.Value if a String is null or empty. /// public static object String(string value) { if (string.IsNullOrEmpty(value)) { return DBNull.Value; } else { return value; } } } }