0

行ごとに Excel ファイルを読み込んで、データベースに保存されるコレクションに項目を追加しています。

データベース内:

NumberValue1 to NumberValue3  are numbers and nullable.
Datevalue1 to Datavalue5 are dates and nullable.
BooleanYN1 is a varchar2(1 char) and nullable.

データベースに null が挿入されないように、これらの数値、文字列、および日付値をテストできるようにしたいと考えています。

どうすればこれを処理できますか? テストの下の文字列の場合は問題ありません。日付の変数と数値にこだわっています。

if ((col2Value != null && col3Value != null & col4Value != null))
{
    excelFileDataList.Add(new ExcelData 
    {
        BusinessUnitCode = col2Value.ToString(),
        GenericJobId = Convert.ToInt32(col3Value),

        NumberValue1 = Convert.ToInt32(col8Value) == null ? 0 : Convert.ToInt32(col8Value),
        NumberValue2 = Convert.ToInt32(col8Value) == null ? 0 : Convert.ToInt32(col9Value),
        NumberValue3 = Convert.ToInt32(col8Value) == null ? 0 : Convert.ToInt32(col10Value),

        StringValue1 = col18Value == null ? "" : col18Value.ToString(),
        StringValue2 = col19Value == null ? "" : col19Value.ToString(),
        StringValue3 = col20Value == null ? "" : col20Value.ToString(),

        DateValue1 = Convert.ToDateTime(col28Value) == null ?  : Convert.ToDateTime(col28Value),
        DateValue2 = Convert.ToDateTime(col29Value) == null ?  : Convert.ToDateTime(col29Value),
        DateValue3 = Convert.ToDateTime(col30Value) == null ?  : Convert.ToDateTime(col30Value),
        DateValue4 = Convert.ToDateTime(col31Value) == null ?  : Convert.ToDateTime(col31Value),
        DateValue5 = Convert.ToDateTime(col32Value) == null ?  : Convert.ToDateTime(col32Value),

        BooleanYN1 = col34Value == null ? "" : col34Value.ToString(),
        BooleanYN2 = col35Value == null ? "" : col35Value.ToString(),
        BooleanYN3 = col36Value == null ? "" : col36Value.ToString(),                                            
    });

オブジェクトのインスタンスに設定されていないオブジェクト参照を取得しています。これは null 値の結果だと思います。許容できるさまざまな列の Excel スプレッドシートに null 値があります

4

2 に答える 2

1

呼び出すConvert.ToInt32またはオブジェクトで null をテストする必要Convert.ToDateTimeがあります (null 値を渡すと例外がスローされるため)。それ以外の:

NumberValue1 = Convert.ToInt32(col8Value) == null ? 0 : Convert.ToInt32(col8Value)

あなたが望むでしょう:

NumberValue1 = col8Value == null ? 0 : Convert.ToInt32(col8Value)

そして代わりに:

DateValue1 = Convert.ToDateTime(col28Value) == null ?  : Convert.ToDateTime(col28Value)

あなたが望むでしょう:

DateValue1 = col28Value == null ? DateTime.MinValue : Convert.ToDateTime(col28Value)

または、クラスがNullable<T>値をサポートしている場合:

DateValue1 = col28Value == null ? null : (DateTime?)Convert.ToDateTime(col28Value)
于 2013-07-03T17:10:43.657 に答える