2012-03-24 8 views
0

LINQの実行中にこのエラーが発生しました。 "暗黙的に型 'System.DateTime?'を変換できません。LINQクエリ発行日時変換

データ型のために私はそれを知っていますが、変換が機能していないのはそれを行う方法が他にあります。 ここに私のコードです。

 {var tvr = from t in ce.tbl_TVRinfo 
        where t.TVRID == fTVRid 
        select new TVRDetails 
        { 
         TVRID = t.TVRID, 
         Ename = t.Ename, 
         Esdw = t.Esdw, 
         Edob =t.Edob, //this field is causing date conversion error 
         Epob = t.Epob, 
         Equalification = t.Equalification, 
         NIC = t.NIC, 
         EAddress = t.EAddress 
        } 
     return tvr.ToList(); 
     } 

答えて

1

Nullable DateTimeを標準のDateTimeに割り当てようとしています。

Edob =t.Edob.Value 

をそれとも、わからない場合、それは価値があります:あなたはnull許容のDateTime値が含まれていることを確信しているなら、あなたは何ができる

Edob = t.Edob.HasValue ? t.Edob.Value : SomeOtherValidDateTimeValue 
+0

Thanx ..私は試して、そのうまくいったEdob = t.Edob.Value – Naveed

+0

しかし、私が言及したように、t.Edob.Valueがnullの場合、これは失敗します。だからこそ、あなたはそれを回避する必要があるでしょう、あなたが100%自信がない限り、それはそうではないと確信しています。 –

0

あなたは

Edob = (DateTime)t.Edob 

を行うことができますがt.Edobがnullの場合、例外が発生します。 Edobがnullの場合、デフォルトのdatetimeを提供する方が良いでしょう。ここではNULL結合演算子が便利です。

+0

私はそれらを試してみましたが、それらの両方が同じを与えていたがエラー... – Naveed

+0

それは動作しますが、@ダレンの答えはもう少しエレガントです。両方とも言ったように、ヌル統合バージョンを使用しない限り、t.Edobがヌルである場合は、時間がかかることに注意してください。 – StuartLC

+0

hmm。 。 .thats right – Naveed