2013-10-18 2 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()'을 호출하고이 메서드를 저장소 식으로 변환 할 수 없습니다.

여러분이 저를 도울 수 있기를 바랍니다. 문자열로 그 값을 필요로합니다. 나는 그것을 datetime으로 변경할 수 없습니다.

+0

가능한 복제본 [Entity Framework 문자열로 변환하는 데 DateTime] (http://stackoverflow.com/questions/8982910/entity-framework-convert-datetime-to-string) –

+0

어떻게 도움이 될지 모르겠다. . 내 변환이 하위 쿼리 안에 있습니다. – Moondustt

+0

이것이 필요한 경우 날짜를 문자열로 포함하는 다른 열을 테이블에 넣으십시오. 또는 동일한 결과를 얻으려면 저장 프로 시저를 작성하십시오. – jannagy02

답변

4

Entity Framework는 ToString() 메서드를 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, 
    ... 
}); 
+1

당신이있는 곳에'ToList'를 호출하면 완전한 엔티티가 생성됩니다. 'SelectListItem' 아이템을 선택하고 마지막 선택으로 끝낸 후에'AsEnumerable'을 호출하는 것이 더 낫습니다. –

1

그 엔티티 프레임 워크는 SQL에 LINQ 쿼리를 변환 기억하십시오. 오류 메시지는 명확하고 .ToString() 메서드를 인식하지 못합니다.

엔티티 프레임 워크를 사용하여 결과를 검색 한 다음 필요한 DateTime을 String으로 변환해야합니다.