Übergeben von null in eine DataTable aus einer einzigen Zeile, bedingte Anweisung Parsen von string-Werten

Habe ich eine app, die Schleifen durch eine Feste Breite Textdatei, liest jede Zeile in eine string-variable und verwendet .Substring () - Methode, um Daten für ein bestimmtes Feld. Für ein gegebenes Feld, es wird überprüft, um zu sehen, ob der Inhalt sind einfach Räume, oder wenn es eigentlich "Daten", d.h. irgendetwas, sondern Räume. Wenn es Daten, und diese Daten repräsentiert ein Datum, zum Beispiel DateTime.Parse() auf, die Daten und übergeben ein Feld von Typ datetime in C# DataTable; jedoch, wenn es keine Daten-nur Räume, ich will einfach nur einen null-Wert übergeben, um das Feld. Hier ist ein code-snippet zu veranschaulichen:

var dataTable = new DataTable();

dataTable.Columns.Add("Application_Date").DataType = Type.GetType("System.DateTime");

while (!sr.EndOfStream)
{
    string row = sr.ReadLine();

    if (row.Substring(0, 1) == "2" && row.Substring(42, 1) == "T")
    {
        DataRow dr = dataTable.NewRow();

        dr["Application_Date"] = row.Substring(124, 8) != "        " ?
                                 DateTime.Parse(row.Substring(124, 4) +
                                 "-" + row.Substring(128, 2) + "-" +
                                 row.Substring(130, 2)) :
                                 null as DateTime?;                                                         

     }
}

Mein problem ist, dass wenn ich versuche zu laufen, es gibt eine Fehlermeldung, die sagen, es will ein DBNull (Cannot set Column 'Application_Date' to be null. Please use DBNull instead.)

Aber wenn ich versuchen, übergeben Sie einfach einen DBNull statt, es sagt mir, dass es nicht die Konvertierung zwischen DateTime und DBNull (Type of conditional expression cannot be determined because there is no implicit conversion between 'System.DateTime?' and 'System.DBNull')

Was vermisse ich hier?

InformationsquelleAutor Tom Miller | 2011-03-07
Schreibe einen Kommentar