0

データ(顧客アドレス)を含むデータテーブルがあります。場合によっては、列ADDR3に値がなく、列ADDR2に値があります。ADDR3の値を確認しようとしていますが、値が含まれていない場合は、ADDR2の値をADDR3にコピーしてから、ADDR2を空白にします。以下のコードを使おうとしましたが、動作しません。'if'ステートメントの後にブレークポイントを設定しましたが、プログラムが中断することはありません。しかし、多くの行にnullのADDR3フィールドがあることを私は知っています。誰かが私が間違っていることを教えてもらえますか?

            foreach (DataRow row in dataSet11.DataTable1.Rows)
            {
                object value = row["ADDR3"];
                if (value == DBNull.Value)
                {
                    row["ADDR3"] = row["ADDR2"];
                    row["ADDR2"] = " ";
                }
            }
4

3 に答える 3

2

あなたのrow["ADDR3"]値が決して等しくない可能性がありますDbNull.Value。これは、たとえばWebサービスを介して転送されたデータテーブルの場合によくあります(XML変換のためにnullではなく空の文字列があります)。

あなたの前にブレークポイントを置き、if値が何であるかを正確に見つけてください。row["ADDR3"] == nullまたはをチェックしてみてくださいstring.IsNullOrWhiteSpace(row["ADDR3"].ToString())

于 2012-03-22T15:18:05.503 に答える
0

値を(DBNull.Valueではなく)nullと比較してみましたか?DBNull.Valueは特定のデータベースオブジェクト専用であり、データセット/データテーブルに読み込まれると表示されないと思います。

于 2012-03-22T15:16:45.517 に答える
0

これを試して:

foreach (DataRow row in dataSet11.DataTable1.Rows)
{
    if (
        row.IsNull("ADDR3") // True if the value is null
        ||
        String.IsNullOrWhitespace(row["ADDR3"]) // True if the value is "", " ", etc.
       )
    {
        row["ADDR3"] = row["ADDR2"];
        row["ADDR2"] = " ";
    }
}
于 2012-03-22T15:16:54.553 に答える