web-dev-qa-db-ja.com

データテーブルにnull値があるかどうかを確認する最良の方法

データテーブルにnull値が含まれているかどうかを確認する最良の方法は何ですか?

このシナリオでは、ほとんどの場合、1つの列にすべてnull値が含まれます。

(このデータテーブルはサードパーティのアプリケーションによって返されます-アプリケーションがデータテーブルを処理する前に変更を加えようとしています)

81
Ananth

列の値をDBNull.Value値と比較して、適切と思われる任意の方法でnull値をフィルタリングおよび管理してください。

foreach(DataRow row in table.Rows)
{
    object value = row["ColumnName"];
    if (value == DBNull.Value)
        // do something
    else
        // do something else
}

DBNullクラスの詳細


テーブルに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();
152
hunter
foreach(DataRow row in dataTable.Rows)
{
    if(row.IsNull("myColumn"))
        throw new Exception("Empty value!")
}
23
zavaz

行と列をループスローし、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;
}

テーブルの残りの部分のループを保存します。

10
StuperUser

私は…のようにします.

(!DBNull.Value.Equals(dataSet.Tables[6].Rows[0]["_id"]))
1
DataTable dt = new DataTable();
        foreach (DataRow dr in dt.Rows)
        {
            if (dr["Column_Name"] == DBNull.Value)
            {
                //Do something
            }
            else
            {
                //Do something
            }
        }
0
Sush

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値に変更します。

0
Sandy Sing