web-dev-qa-db-ja.com

SQL ServerのIsNull()関数に相当するC#

SQL Serverでは、IsNull()関数を使用して、値がnullであるかどうかを確認し、nullである場合は別の値を返すことができます。今、私はC#に似たようなものがあるかどうか疑問に思っています。

たとえば、私は次のようなことをしたいです:

myNewValue = IsNull(myValue, new MyValue());

の代わりに:

if (myValue == null)
  myValue = new MyValue();
myNewValue = myValue;

ありがとう。

103
HAdes

Null合体(??)演算子と呼ばれます:

myNewValue = myValue ?? new MyValue();
187
Kent Boogaart

悲しいことに、DBNullで機能するnull合体演算子に相当するものはありません。そのためには、三項演算子を使用する必要があります。

newValue = (oldValue is DBNull) ? null : oldValue;
13
Robert Rossney
public static T isNull<T>(this T v1, T defaultValue)
{
    return v1 == null ? defaultValue : v1;
}

myValue.isNull(new MyValue())
4
Rudy

Equalsメソッドを使用します。

object value2 = null;
Console.WriteLine(object.Equals(value2,null));
4
serializer

DB Nullsを使用するために、VBアプリケーション用の束を作成しました。 VBの組み込みCxxx関数に似ているため、Cxxx2と呼びます。

私のCLR Extensionsプロジェクトでそれらを見ることができます

http://www.codeplex.com/ClrExtensions/SourceControl/FileView.aspx?itemId=363867&changeSetId=17967

1
Jonathan Allen

以下の方法を使用します。

    /// <summary>
    /// Returns replacement value if expression is null
    /// </summary>
    /// <param name="expression"></param>
    /// <param name="replacement"></param>
    /// <returns></returns>
    public static long? IsNull(long? expression, long? replacement)
    {
        if (expression.HasValue)
            return expression;
        else
            return replacement;
    }

    /// <summary>
    /// Returns replacement value if expression is null
    /// </summary>
    /// <param name="expression"></param>
    /// <param name="replacement"></param>
    /// <returns></returns>
    public static string IsNull(string expression, string replacement)
    {
        if (string.IsNullOrWhiteSpace(expression))
            return replacement;
        else
            return expression;
    }
0
sushil suthar

2つの関数を記述します

    //When Expression is Number
    public static double? isNull(double? Expression, double? Value)
    {
        if (Expression ==null)
        {
            return Value;
        }
        else
        {
            return Expression;
        }
    }


    //When Expression is string (Can not send Null value in string Expression
    public static string isEmpty(string Expression, string Value)
    {
        if (Expression == "")
        {
            return Value;
        }
        else
        {
            return Expression;
        }
    }

彼らは非常にうまく機能します

0

DataRow型で次の拡張メソッドを使用しています。

    public static string ColumnIsNull(this System.Data.DataRow row, string colName, string defaultValue = "")
    {
        string val = defaultValue;
        if (row.Table.Columns.Contains(colName))
        {
            if (row[colName] != DBNull.Value)
            {
                val = row[colName]?.ToString();
            }
        }
        return val;
    }

使用法:

MyControl.Text = MyDataTable.Rows[0].ColumnIsNull("MyColumn");
MyOtherControl.Text = MyDataTable.Rows[0].ColumnIsNull("AnotherCol", "Doh! I'm null");

最初に列の存在を確認します。クエリ結果のいずれにもその列にnull以外の値がない場合、DataTableオブジェクトはその列も提供しないためです。

0