2016-07-31 32 views
0

嗨,我相信這個問題已經在StackOverFlow上執行了100次,但我沒有設法解決我的問題。這是使我麻煩的代碼行無法將類型'System.Int32'轉換爲鍵入'System.Object'。 LINQ to Entities只支持投射EDM原始類型或枚舉類型

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

請如何解決此問題。

全碼

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

有了這個代碼,我從數據庫中獲取日期時間,並鑄造從DateTime格式字符串格式。

我想從這個2016年12月31日00有:00:00.000像這樣2016年12月31日

感謝大家閱讀這個問題:)

+0

x的數據類型是什麼? – pquest

+0

您不能將整數與字符串「。」組合。使用ToString()將整數轉換爲字符串。解決這個問題的正確方法是使用ToString(「dd.MM.yyyy」)來獲取DateTime和輸出。 – jdweng

+0

你爲什麼選擇(日期時間)?請展示您的模型。並顯示您的完整查詢。 – user3185569

回答

0

我解決這個問題,通過改變代碼

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

線在此

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

謝謝大家的幫助! :)

1

不能使用的ToString( )用於在針對數據庫的查詢中進行格式化,因爲沒有等效的SQL方法,它會給你一個錯誤。 (這裏是支持的字符串方法列表,BTW:https://msdn.microsoft.com/en-us/library/bb738534(v=vs.100).aspx)。

最簡單的方法是返回原始值,然後在調用主查詢(通過調用ToList()或遍歷結果)之後執行格式化。

這裏有幾個方面:

How can I convert DateTime to String in Linq Query?

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

相關問題