2012-03-24 15 views
0

während LINQ habe ich diesen Fehler. "Kann den Typ 'System.DateTime' nicht implizit konvertieren?" zu 'System.DateTime'. Eine explizite Konvertierung existiert (fehlt Ihnen ein Cast?) "LINQ Query Issue DateTime Konvertierung

Ich weiß es wegen des Datentyps, aber Convert funktioniert nicht, gibt es eine andere Möglichkeit, es zu tun. Hier ist mein Code.

 {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(); 
     } 

Antwort

1

Sie versuchen, einer Standard-DateTime eine Nullable DateTime zuzuweisen. Wenn Sie sicher sind, dass die Nullable Datetime-Wert enthält, dann könnten Sie tun:

Edob =t.Edob.Value 

Oder wenn Sie nicht sicher sind, hat es einen Wert:

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

Danke .. .Ich habe versucht und es funktioniert gut Edob = t.Edob.Value – Naveed

+0

Naveed, wie ich bereits erwähnt, wird dies fehlschlagen, wenn t.Edob.Value ist null. Daher müssen Sie möglicherweise daran arbeiten, es sei denn, Sie sind zu 100% sicher, dass dies nie der Fall sein wird, obwohl dies sehr selten der Fall ist. –

0

Sie könnten

Edob = (DateTime)t.Edob 

tun, aber eine Ausnahme wird ausgelöst, wenn t.Edob null ist. Besser wäre es, eine Standard-Datetime anzugeben, wenn Edob null ist. Der Koaleszenzoperator NULL ist hier nützlich.

Edob = t.Edob ?? DateTime.Now // Or DateTime.MinValue, or whatever makes sense in your situation 
+0

ich versuchte, sie aber beide gaben gleiche Fehler ... – Naveed

+0

Es funktioniert, aber @ Darrens Antwort ist ein bisschen eleganter. Beachten Sie, dass Sie, wie wir beide gesagt haben, eine NullReferenceException für die Laufzeit erhalten, wenn t.Edob null ist, es sei denn, Sie verwenden die Null-Koaleszenzversion. – StuartLC

+0

hmm. . .thats right – Naveed