SQL Server의 IsNull() 함수에 해당하는 C#
SQL Server에서 다음을 사용할 수 있습니다.IsNull()
값이 null인지 확인하고, null이면 다른 값을 반환하는 함수입니다.이제 C#에 비슷한 것이 있는지 궁금합니다.
예를 들어 다음과 같은 작업을 수행합니다.
myNewValue = IsNull(myValue, new MyValue());
다음 대신:
if (myValue == null)
myValue = new MyValue();
myNewValue = myValue;
감사해요.
그것은 null 병합이라고 불립니다)이라고 합니다.??
) 연산자:
myNewValue = myValue ?? new MyValue();
안타깝게도 DBNull과 함께 작동하는 Null 병합 연산자와 동등한 연산자는 없습니다. 이를 위해서는 다음과 같은 3차 연산자를 사용해야 합니다.
newValue = (oldValue is DBNull) ? null : oldValue;
public static T isNull<T>(this T v1, T defaultValue)
{
return v1 == null ? defaultValue : v1;
}
myValue.isNull(new MyValue())
동등한 방법을 사용합니다.
object value2 = null;
Console.WriteLine(object.Equals(value2,null));
DB Nulls로 작업하기 위해 VB 애플리케이션을 위한 일괄 작업을 만들었습니다.VB의 내장된 Cxxx 기능과 비슷하기 때문에 Cxx2라고 부릅니다.
CLR Extensions 프로젝트에서 볼 수 있습니다.
http://www.codeplex.com/ClrExtensions/SourceControl/FileView.aspx?itemId=363867&changeSetId=17967
두 개의 함수를 작성합니다.
//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;
}
}
그들은 매우 잘 작동합니다.
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 개체가 해당 열을 제공하지도 않기 때문에 먼저 열의 존재 여부를 확인합니다.
다음 방법을 사용합니다.
/// <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;
}
public static T IsNull<T>(this T DefaultValue, T InsteadValue)
{
object obj="kk";
if((object) DefaultValue == DBNull.Value)
{
obj = null;
}
if (obj==null || DefaultValue==null || DefaultValue.ToString()=="")
{
return InsteadValue;
}
else
{
return DefaultValue;
}
}
//This method can work with DBNull and null value. This method is question's answer
이것은 농담의 반을 의미합니다. 왜냐하면 질문이 좀 어리석기 때문입니다.
public static bool IsNull (this System.Object o)
{
return (o == null);
}
이것은 확장 방법이지만 시스템을 확장합니다.개체, 즉 지금 사용하는 모든 개체에는 IsNull() 메서드가 있습니다.
그런 다음 다음 작업을 수행하여 대량의 코드를 절약할 수 있습니다.
if (foo.IsNull())
최고의 절름발이 대신에:
if (foo == null)
언급URL : https://stackoverflow.com/questions/169217/c-sharp-equivalent-of-the-isnull-function-in-sql-server
'programing' 카테고리의 다른 글
애저 데브옵스 파이프라인에서 사용자 환경 변수를 설정하고 읽는 방법은 무엇입니까? (0) | 2023.05.07 |
---|---|
Postgres에서 모든 테이블의 행 수를 어떻게 찾습니까? (0) | 2023.05.07 |
깃 저장소에서 이전 기록을 제거하려면 어떻게 해야 합니까? (0) | 2023.05.07 |
각각의 새로운 캐릭터에 WPF TextBox 바인딩 불을 붙입니까? (0) | 2023.05.07 |
formGroup에 대한 Angular2 설정 값 (0) | 2023.05.07 |