С# эквивалент функции IsNull() в SQL Server

В SQL Server вы можете использовать функцию IsNull(), чтобы проверить, является ли значение нулевым, а если оно есть, верните другое значение. Теперь мне интересно, есть ли что-то подобное в С#.

Например, я хочу сделать что-то вроде:

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

вместо:

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

Спасибо.

Ответ 1

Он назвал нулевой коалесцирующий (??) оператор:

myNewValue = myValue ?? new MyValue();

Ответ 2

К сожалению, нет эквивалента нулевому коалесцирующему оператору, который работает с DBNull; для этого вам нужно использовать тернарный оператор:

newValue = (oldValue is DBNull) ? null : oldValue;

Ответ 3

Используйте метод Equals:

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

Ответ 4

public static T isNull<T>(this T v1, T defaultValue)
{
    return v1 == null ? defaultValue : v1;
}

myValue.isNull(new MyValue())

Ответ 6

Вы пишете две функции

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

Они работают очень хорошо

Ответ 7

Я использовал следующий метод расширения для моих типов DataRow:

    public static string ColumnIsNull(this 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");

Сначала я проверяю существование столбца, потому что, если ни один из результатов запроса не имеет ненулевое значение для этого столбца, объект DataTable даже не будет создавать этот столбец.

Ответ 8

Это подразумевается наполовину как шутка, так как вопрос глупо.

public static bool IsNull (this System.Object o)
{
   return (o == null);
}

Это метод расширения, однако он расширяет System.Object, поэтому каждый объект, который вы используете сейчас, имеет метод IsNull().

Затем вы можете сохранить тонны кода, выполнив следующие действия:

if (foo.IsNull())

вместо супер хромого:

if (foo == null)