데이터 테이블에 null 값이 있는지 확인하는 가장 좋은 방법은 무엇입니까?
대부분의 경우 시나리오에서 하나의 열에는 모두 null 값이 있습니다.
(이 데이터 테이블은 타사 응용 프로그램에서 반환됩니다. 응용 프로그램이 데이터 테이블을 처리하기 전에 유효성 검사를 시도하고 있습니다.)
답변:
열의 값을 값과 비교하여 DBNull.Value
적합하다고 생각되는 방식으로 null 값을 필터링하고 관리합니다.
foreach(DataRow row in table.Rows)
{
object value = row["ColumnName"];
if (value == DBNull.Value)
// do something
else
// do something else
}
테이블에 null 값이 있는지 확인하려면 다음 방법을 사용할 수 있습니다.
public static bool HasNull(this DataTable table)
{
foreach (DataColumn column in table.Columns)
{
if (table.Rows.OfType<DataRow>().Any(r => r.IsNull(column)))
return true;
}
return false;
}
다음과 같이 작성할 수 있습니다.
table.HasNull();
table.AsEnumerable()
table.Rows.OfType<DataRow>()
행과 열을 반복해서 던지고, null을 확인하고, bool이있는 null이 있는지 추적 한 다음 테이블을 반복 한 후 확인하고 처리 할 수 있습니다.
//your DataTable, replace with table get code
DataTable table = new DataTable();
bool tableHasNull = false;
foreach (DataRow row in table.Rows)
{
foreach (DataColumn col in table.Columns)
{
//test for null here
if (row[col] == DBNull.Value)
{
tableHasNull = true;
}
}
}
if (tableHasNull)
{
//handle null in table
}
예를 들어 break 문을 사용하여 foreach 루프에서 나올 수도 있습니다.
//test for null here
if (row[col] == DBNull.Value)
{
tableHasNull = true;
break;
}
나머지 테이블을 통해 반복을 저장합니다.
나는 좋아할 것이다 ....
(!DBNull.Value.Equals(dataSet.Tables[6].Rows[0]["_id"]))
LinQ 다음 쿼리 사용을 사용하여 null / blank / space 등 값을 사용할 수 있습니다.
var BlankValueRows = (from dr1 in Dt.AsEnumerable()
where dr1["Columnname"].ToString() == ""
|| dr1["Columnname"].ToString() == ""
|| dr1["Columnname"].ToString() == ""
select Columnname);
여기에서 Columnname 을 테이블 열 이름으로 바꾸고 위의 코드에서 검색 항목을 ""로 바꾸면 null 값을 찾습니다.