我有以下方法:
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 to Entities 无法识别方法"System.String ToString()"方法,并且此方法无法转换为存储表达式。
我希望你能帮助我,我需要该值作为字符串,我无法将其更改为日期时间。
实体
框架不知道如何在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,
...
});
请记住,实体框架正在将 linq 查询转换为 SQL。错误消息非常清楚,它无法识别 .ToString() 方法。
您必须使用实体框架检索结果,然后执行所需的 DateTime 到字符串转换。