2

この値 (row[10]) は、T-SQL の SQL 結果セットの DataRow オブジェクトから取得されます。「オブジェクト」というタイプがあると思います。私のデータベースでは、この特定のレコードのこのフィールドに NULL の値がありますが、結果セットには null 値ではなく空の文字列が返されます。根本的な問題を修正し、結果セットが空の文字列ではなく NULL を返すようにしたいのですが、それが不可能な場合は、このコードをより効率的にするだけで十分です。つまり、最初のスニペットです。ケース。

これは、row[10].ToString() が空の文字列、null、または DateTime 形式に等しい場合に機能しますが、短くしたいと思います。これが今のところ私の回避策です。

        string temp0 = row[10].ToString();
        DateTime? temp = null;
        if (temp0 == "")
        {
            temp0 = null;
        }
        if (temp0 != null)
        {
            temp = DateTime.Parse(temp0);
        }

        d.date_migrate_prod = temp == null ? null : temp;

これは、null 日時値、実際の日時値に対して機能しますが、row[10] が空の文字列に等しい場合は機能しません。

        DateTime? temp = DateTime.Parse(row[10].ToString());
        d.date_migrate_prod = temp == null ? null : temp;
4

4 に答える 4

1

以下はショートカットとして機能するはずです。

DateTime? temp = String.IsNullOrEmpty(row[10].ToString())? null : DateTime.Parse(temp0);
于 2012-10-21T19:23:23.800 に答える
1

述べられた質問への答え。

string temp0 = row[10].ToString();
DateTime?;
if (string.IsNullOrEmpty(temp0)) 
{
    temp = null;
}
else
{
    temp = DateTime.Parse(temp0);
}

DateTimeTryParse を使用できます。
null を渡すことができますが、1/1/0001 に解析されます

于 2012-10-21T19:07:37.887 に答える
0

試す:

DateTime? localvariable 
      = row[10] == Convert.DBNull ? null : Convert.ToDateTime(row[10].ToString())
于 2012-10-22T14:31:55.423 に答える