2016-10-05 19 views
0

指定されたキャストは、行で有効なエラーではありません:select new File.Models.FileDetail()。コード内のDTTTはデータテーブルであり、FileDetialはFilename、Dt、receivedcount、status paramsを持つモデルのクラスです。私はすべてのフィールドのデータ型をチェックしており、それらは正しいです。なぜこのエラーが出るのか分かりません。System.InvalidCastException:指定されたキャストが有効でない(linqクエリ)

return (from row in DTTT.AsEnumerable() 
         select new File.Models.FileDetail() 
         { 
          Filename = row.Field<string>("name"), 
          Dt = row.Field<DateTime?>("Dt"), 
          ReceivedCount = row.Field<int?>("count"), 
          status = row.Field<string>("status") 

         } 

        ).ToList(); 
+0

は 'Dt'と' ReceivedCount'はヌル入力可能ですか? –

+0

それぞれのDbTypeは - ファイル名、Dt、受信件数、ステータス 'とは何ですか?そのうちの1つはタイプキャストしようとしているタイプではありません –

+0

メソッドから返されるタイプは何ですか? – Enigmativity

答えて

0

あなたはTimeSpanとしてそれをキャストすることができるはずです。

Dt = row.Field<TimeSpan>("Dt"); 

OR

Dt = (DateTime)(row.Field<DateTime>("Dt") == DBNull.Value ? DateTime.MinValue :row.Field<DateTime>("Dt")); 
0

私の "DT" フィールドのDBTYPEがcharであるとReceivedCountプロパティフィールドは次のように宣言されています私のモデルの日時。そのため、無効なキャスト例外がありました。モデルフィールドのデータ型を文字列に変更しました。みんな、ありがとう。

関連する問題