データベースから取得したデータを処理する関数を集めたクラス

いろんな便利関数を集めたクラスを XXXHelper という名前で作っていこうと思う。

using System;

namespace SabineLib
{
  /// <summary>
  /// データベースから取得したデータを処理する関数を集めたクラス
  /// </summary>
  public class DbObjectHelper
  {
    /// <summary>
    /// obj が null か DBNull なら true
    /// </summary>
    public static bool IsNullOrDBNull(object obj)
    {
      if (obj == null || obj == DBNull.Value)
      {
        return true;
      }
      
      return false;
    }

    /// <summary>
    /// obj1 が null か DBNull なら obj2、そうでないなら obj1 を返す。
    /// SQLのCOALESCE関数に相当。
    /// </summary>
    public static object Coalesce(object obj1, object obj2)
    {
      return IsNullOrDBNull(obj1) ? obj2 : obj1;
    }

    /// <summary>
    /// obj1 が null か DBNull なら obj3、そうでないなら obj2 を返す。
    /// PL/SQLのNVL2関数に相当。
    /// </summary>
    public static object Coalesce2(object obj1, object obj2, object obj3)
    {
      return IsNullOrDBNull(obj1) ? obj3 : obj2;
    }

    /// <summary>
    /// obj1 と obj2 が等しいなら null、異なるなら obj1 を返す。
    /// SQLのNULLIF関数に相当。
    /// </summary>
    public static object NullIf(object obj1, object obj2)
    {
      if (obj1.Equals(obj2))
      {
        return null;
      }

      return obj1;
    }
  }
}