2016-07-31 11 views
0

Hallo Ich glaube, diese Frage war bereits ein hundert Mal auf StackOverFlow, aber ich habe es nicht geschafft, mein Problem zu beheben. Dies ist eine Codezeile, die mich zu einem Problem macht.Der Typ 'System.Int32' kann nicht in den Typ 'System.Object' umgewandelt werden. LINQ to Entities unterstützt nur Casting EDM Primitive oder Aufzählungstypen

DatumSnimanja = (x.VrijemeSnimanja != null) ? ((DateTime)x.VrijemeSnimanja).Day + "." + ((DateTime)x.VrijemeSnimanja).Month + "." + ((DateTime)x.VrijemeSnimanja).Year : null, 

Bitte, wie Sie das beheben.

vollständiger Code

 var result = resultVideoKlipBaseInfo.Select(x => new 
      { 
       x.IDvideoKlip, 
       x.LokacijaHDD, 
       x.NazivVideoKlipa, 
       x.Snimatelj.IDsnimatelj, 
       x.Snimatelj.Ime, 
       x.Snimatelj.Prezime, 
       x.Snimatelj.Storno, 
       DatumSnimanja = (x.VrijemeSnimanja != null) ? ((DateTime)x.VrijemeSnimanja).Day + "." + ((DateTime)x.VrijemeSnimanja).Month + "." + ((DateTime)x.VrijemeSnimanja).Year : null, 
       SatIMinutaSnimanja = (x.VrijemeSnimanja != null) ? ((DateTime)x.VrijemeSnimanja).Hour + ":" + ((DateTime)x.VrijemeSnimanja).Minute : null, 
       x.VrijemeSnimanja,       
       x.VrijemeTrajanjaKlipa 

      }); 
      return Ok(result); 

Mit diesem Code ich Datetime aus der Datenbank bin holen, und es String-Format von Datums- und Uhrzeitformat Gießen.

ich von diesem 2016.12.31 00 haben wollen: 00: 00.000 so etwas wie dieses 31.12.2016

Vielen Dank an alle, diese Frage für das Lesen :)

+0

Was ist der Datentyp von x? – pquest

+0

Sie können Integer nicht mit der Zeichenfolge "." Kombinieren. Verwenden Sie ToString(), um eine Ganzzahl in eine Zeichenfolge zu konvertieren. Der korrekte Weg von dong ist, eine DateTime zu nehmen und mit ToString ("dd.MM.yyyy") auszugeben. – jdweng

+0

Warum werfen Sie auf (DateTime)? Zeigen Sie bitte Ihr Modell. und zeigen Sie Ihre vollständige Abfrage an. – user3185569

Antwort

0

ich dieses Problem beheben, indem Codezeile ändert

DatumSnimanja = (x.VrijemeSnimanja != null) ? ((DateTime)x.VrijemeSnimanja).Day + "." + ((DateTime)x.VrijemeSnimanja).Month + "." + ((DateTime)x.VrijemeSnimanja).Year : null, 

In diesem

DatumSnimanja = SqlFunctions.DateName("day", x.VrijemeSnimanja) + "." + SqlFunctions.DateName("month", x.VrijemeSnimanja) + "." + SqlFunctions.DateName("year", x.VrijemeSnimanja), 

Vielen Dank für Ihre Unterstützung! :)

1

Sie nicht ToString verwenden können () für die Formatierung in einer Abfrage, die gegen eine Datenbank gerichtet ist, weil es keine äquivalente SQL-Methode gibt und Sie dadurch einen Fehler erhalten. (Hier ist eine Liste der unterstützten String-Methoden, BTW: https://msdn.microsoft.com/en-us/library/bb738534(v=vs.100).aspx).

Der einfachste Ansatz ist die Rückgabe der Rohwerte und dann die Formatierung, nachdem die Hauptabfrage aufgerufen wurde (durch Aufrufen von ToList() darauf oder durch Iterieren der Ergebnisse).

Hier sind ein paar Möglichkeiten:

How can I convert DateTime to String in Linq Query?

Convert datetime to a formatted string inside a LINQ to SQL query