it-swarm.com.de

C # -Äquivalent der IsNull () - Funktion in SQL Server

In SQL Server können Sie die Funktion IsNull() verwenden, um zu überprüfen, ob ein Wert null ist, und wenn dies der Fall ist, einen anderen Wert zurückzugeben. Jetzt frage ich mich, ob es in C # etwas Ähnliches gibt.

Zum Beispiel möchte ich so etwas tun:

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

anstatt:

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

Vielen Dank.

95
HAdes

Es wird als nullkoaleszierender Operator (??) bezeichnet:

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

Leider gibt es kein Äquivalent zum nullkoaleszierenden Operator, der mit DBNull arbeitet. Dafür müssen Sie den ternären Operator verwenden:

newValue = (oldValue is DBNull) ? null : oldValue;
13
Robert Rossney

Verwenden Sie die Equals-Methode:

object value2 = null;
Console.WriteLine(object.Equals(value2,null));
5
serializer
public static T isNull<T>(this T v1, T defaultValue)
{
    return v1 == null ? defaultValue : v1;
}

myValue.isNull(new MyValue())
3
Rudy

Für die Arbeit mit DB Nulls habe ich eine Reihe für meine VB - Anwendungen erstellt. Ich nenne sie Cxxx2, da sie den in VB integrierten Cxxx-Funktionen ähneln.

Sie können sie in meinem CLR Extensions-Projekt sehen

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

1
Jonathan Allen

Verwenden Sie die folgenden Methoden.

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

Sie schreiben zwei Funktionen

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

Sie funktionieren sehr gut

0

Ich habe die folgende Erweiterungsmethode für meine DataRow-Typen verwendet:

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

verwendungszweck:

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

Ich überprüfe zuerst das Vorhandensein der Spalte. Wenn keines der Abfrageergebnisse einen Wert ungleich Null für diese Spalte hat, stellt das DataTable-Objekt diese Spalte nicht zur Verfügung.

0