2013-10-18 86 views
0

我有以下方法:轉換日期時間爲字符串的實體框架

public List<REP_MEDIDORDISPLAY> GetAllMedidoresDisplay() 
{   
    return ent.TB_MEDIDOR.Select(x => new REP_MEDIDORDISPLAY 
    { 
      Data_TOI = x.Data_TOI, 
      Elemento = x.Elemento, 
      Fase = x.Fase, 
      KdKe = x.KD_KE, 
      N_Equipamento = x.Numero, 
      Tensao = x.Tensao, 
      Status = x.TB_REVISAO.Count > 0 ? "Revisão": 
         x.TB_CHECAGEM_INTERNA.Count > 0 ? "Checagem interna": 
         x.TB_MESACALIBRACAO.Count > 0 ? "Mesa de calibração": 
         x.TB_HIPOT.Count > 0 ? "Hipot": 
         x.TB_INSPECAO.Count > 0? "Inspeção" : 
         x.TB_AGENDAMENTO.FirstOrDefault(y => y.ID_Medidor == x.ID).Data_Agendamento.HasValue ? 
        --> Error here (x.TB_AGENDAMENTO.FirstOrDefault(y => y.ID_Medidor == x.ID).Data_Agendamento.Value.ToString()) :String.Empty 
    }).ToList<REP_MEDIDORDISPLAY>(); 
} 

但它發射了以下錯誤,當我嘗試將日期時間轉換爲字符串:

LINQ到實體不承認方法'System.String ToString()'方法,並且此方法不能被轉換爲存儲表達式。

我希望你能幫助我,我需要這個值作爲字符串,我不能改變這個日期。

+0

可能重複的[實體框架轉換日期時間字符串](http://stackoverflow.com/questions/8982910/entity-framework-convert-datetime-to-string) –

+0

我不明白這將如何幫助我。 我的轉換是在子查詢中。 – Moondustt

+0

如果您需要此操作,請將另一列放入包含日期字符串的表格中。或者編寫一個存儲過程以獲得相同的結果。 – jannagy02

回答

4

實體框架不知道如何在SQL中執行ToString()方法。所以,你應該用ToList()加載數據,然後轉化爲SelectListItem爲:

return ent.TB_MEDIDOR.ToList().Select(x => new SelectListItem 
{ 
    Data_TOI = x.Data_TOI, 
    ... 
    // can convert DateTime to String here 
}) 
// Then you can select this as a REP_MEDIDORDISPLAY if you want 
.Select(y => new REP_MEDIDORDISPLAY 
{ 
    Data_TOI = y.x.Data_TOI, 
    ... 
}); 
+1

在你所在的地方調用'ToList'將會創建完整的實體。選擇「SelectListItem」項後最好調用'AsEnumerable',然後用最後的選擇結束。 –

1

記得實體框架的LINQ查詢轉換爲SQL。錯誤消息非常明確,它不能識別.ToString()方法。

你將不得不檢索使用實體框架的結果,然後執行所需的日期時間到字符串轉換。

相關問題