// 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;
}
}
}
}