【问题标题】:Convert Datetime to string entity framework将 Datetime 转换为字符串实体框架
【发布时间】:2013-10-18 13:12:37
【问题描述】:

我有以下方法:

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

但是当我尝试将 DateTime 转换为字符串时,它会触发以下错误:

LINQ to Entities 无法识别方法“System.String ToString()”方法,并且该方法无法转换为存储表达式。

希望你们能帮帮我,我需要那个值作为字符串,我不能把它改成日期时间。

【问题讨论】:

  • 我看不出这对我有什么帮助。我的转换在子查询中。
  • 如果您需要这个,那么将另一列放入包含日期作为字符串的表中。或者写一个存储过程来得到同样的结果。
  • 没有办法将其转换为字符串?如果我需要在类中添加一个新列,我将不得不更改很多东西 =/
  • 我不在我的电脑上测试这个但为什么不使用Data_Agendamento.Years + Data_Agendamento. Months + ....

标签: c# linq entity-framework datetime


【解决方案1】:

Entity Framework 不知道如何在 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,
   ...
});

【讨论】:

  • 在您所在的位置调用ToList 将创建完整的实体。选择SelectListItem 项目后调用AsEnumerable 可能更好,然后完成最终选择。
【解决方案2】:

请记住,实体框架正在将您的 linq 查询转换为 SQL。错误信息很清楚,它无法识别 .ToString() 方法。

您必须使用实体框架检索结果,然后执行所需的 DateTime 到 String 的转换。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-22
    • 1970-01-01
    • 1970-01-01
    • 2015-10-11
    • 2017-04-29
    相关资源
    最近更新 更多