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

しかし、DateTime を String に変換しようとすると、次のエラーが発生します。

LINQ to Entities はメソッド 'System.String ToString()' メソッドを認識せず、このメソッドはストア式に変換できません。

私はあなたが私を助けてくれることを願っています.文字列としてその値が必要です.日時に変更することはできません.

4

2 に答える 2

4

ToString()Entity Framework は、SQL でメソッドを実行する方法を知りません。したがって、を使用してデータをロードし、次のよう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,
   ...
});
于 2013-10-18T13:21:24.227 に答える
1

エンティティ フレームワークが linq クエリを SQL に変換していることを思い出してください。エラー メッセージは非常に明確で、.ToString() メソッドを認識しません。

エンティティ フレームワークを使用して結果を取得し、必要な DateTime から String への変換を実行する必要があります。

于 2013-10-18T13:21:47.997 に答える