C # эквивалент функции IsNull () в SQL Server - PullRequest
97 голосов
/ 04 октября 2008

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

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

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

вместо:

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

Спасибо.

Ответы [ 9 ]

184 голосов
/ 04 октября 2008

Это называется оператором нулевого слияния (??):

myNewValue = myValue ?? new MyValue();
13 голосов
/ 04 октября 2008

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

newValue = (oldValue is DBNull) ? null : oldValue;
5 голосов
/ 14 ноября 2011

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

object value2 = null;
Console.WriteLine(object.Equals(value2,null));
4 голосов
/ 02 июля 2015
public static T isNull<T>(this T v1, T defaultValue)
{
    return v1 == null ? defaultValue : v1;
}

myValue.isNull(new MyValue())
1 голос
/ 04 октября 2008

Для работы с DB Nulls я создал группу для своих приложений VB. Я называю их Cxxx2, так как они похожи на встроенные функции Vxx Cxxx.

Вы можете увидеть их в моем проекте CLR Extensions

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

0 голосов
/ 14 января 2019

Используйте методы ниже.

    /// <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 голосов
/ 20 декабря 2018

Я использовал следующий метод расширения для моих типов 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");

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

0 голосов
/ 25 мая 2018

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

    //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 голосов
/ 04 октября 2008

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

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

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

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

if (foo.IsNull())

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

if (foo == null)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...