データテーブルにnull値が含まれているかどうかを確認する最良の方法は何ですか?
このシナリオでは、ほとんどの場合、1つの列にすべて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();
foreach(DataRow row in dataTable.Rows)
{
if(row.IsNull("myColumn"))
throw new Exception("Empty value!")
}
行と列をループスローし、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"]))
DataTable dt = new DataTable();
foreach (DataRow dr in dt.Rows)
{
if (dr["Column_Name"] == DBNull.Value)
{
//Do something
}
else
{
//Do something
}
}
LinQ Use Follow Queryを使用してEtc値をnull /空白/スペースにすることができます
var BlankValueRows = (from dr1 in Dt.AsEnumerable()
where dr1["Columnname"].ToString() == ""
|| dr1["Columnname"].ToString() == ""
|| dr1["Columnname"].ToString() == ""
select Columnname);
ここで、Columnnameをテーブルの列名に置き換え、""上記のコードの検索項目をnull値に変更します。