Passage de la valeur null dans une Table de données à partir d'une seule ligne d'instruction conditionnelle d'analyse de chaîne de valeurs

J'ai une application qui effectue une boucle dans un fichier texte à largeur fixe, lit chaque ligne dans une variable de chaîne et utilise le .Méthode Substring() pour trouver les données relatives à un domaine donné. Pour un domaine donné, il vérifie pour voir si le contenu est tout simplement espaces, ou si il est en fait "données", c'est à dire quelque chose, mais des espaces. S'il existe des données, et que les données représentent une date, par exemple, alors DateTime.Parse() est exécuté sur les données recueillies et transmises à un champ de type datetime dans un C# DataTable; cependant, si il n'y a pas de données--juste des espaces, je veux simplement passer une valeur null dans le champ. Voici un extrait de code pour illustrer:

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?;                                                         

     }
}

Mon problème est que lorsque je tente de l'exécuter, il renvoyait un message d'erreur disant qu'il veut un DBNull (Cannot set Column 'Application_Date' to be null. Please use DBNull instead.)

Mais lorsque je tente de passer simplement d'un DBNull au lieu de cela, il me dit qu'il ne peut pas convertir entre DateTime et DBNull (Type of conditional expression cannot be determined because there is no implicit conversion between 'System.DateTime?' and 'System.DBNull')

Ce qui me manque ici?

OriginalL'auteur Tom Miller | 2011-03-07