2017-01-10 1 views
0

DataAdapter (Oracle이지만 문제는 아닙니다)로 작업 중이며 하나의 특정 필드를 가져 오려고합니다.DataAdapter의 DateTime 필드에서 날짜를 얻는 가장 빠르고 가장 빠른 방법

내 코드는 다음과 같습니다

OracleDataAdapter da = new OracleDataAdapter(cmd); 
    da.Fill(dtHeaders1); 

    txtAuditID_h.Text = dtHeaders1.Rows[0]["AUDIT_ID"].ToString(); 
    //txtPlanID_h.Text = dtHeaders1.Rows[0]["PLAN_ID"].ToString(); 
    txtPlanDesc_h.Text = dtHeaders1.Rows[0]["PLAN_DESC"].ToString(); 
    txtPlanType_h.Text = dtHeaders1.Rows[0]["PLAN_TYPE"].ToString(); 
    txtProduct_h.Text = dtHeaders1.Rows[0]["PRODUCT"].ToString(); 
    txtCustNum_h.Text = dtHeaders1.Rows[0]["CUST_NUM"].ToString(); 
    txtCustName_h.Text = dtHeaders1.Rows[0]["CUST_NM"].ToString(); 
    txteProTransID_h.Text = dtHeaders1.Rows[0]["WORK_ORDER_NUM"].ToString(); 

    string ADate = (dtHeaders1.Rows[0]["AUDIT_COMPLETE_DT"].ToString()); 

    DateTime? dt = string.IsNullOrEmpty(ADate) ? (DateTime?)null : DateTime.Parse(ADate); 

    if (dt == null) 
    { 
      txtAuditCompDt_h.Text = ""; 
    } 
    else 
    { 
      txtAuditCompDt_h.Text = dt.Value.ToShortDateString(); 
    } 

AUDIT_COMPLETE_DT는 날짜 시간 필드입니다. 나는 그것을 "mm/dd/yyyy"형식의 텍스트 상자로 가져와야합니다. 이 으로 작동하지만 더 효율적이고 덜 진절머리 나는 방법이 있다고 생각합니다.

누구든지 나를 교정 할 수 있습니까? 나는 내가하고있는 것을 알고 있다면 마지막 10 줄의 코드가 한 줄로 처리 될 수 있다고 생각한다. 항상 날짜가 기입되지 않기 때문에 NULL 값을 처리 할 수있어

다음
+0

stringly 형식의 코드 ... 나는 강하게 의심'dtHeaders1.Rows [0] [ "AUDIT_COMPLETE_DT은"]'일부'DateTime' 관련 유형 인 - 단지 디버거에서 그것을보고하는 주어야한다 당신은 대답을하거나 유효한 [MCVE]로 게시물을 편집 할 수 있습니다. –

답변

0

내가 일반적으로 할 수있는 작업은 다음과 같습니다.

if (dtHeaders1.Rows[0].IsNull("AUDIT_COMPLETE_DT")) 
{ 
    txtAuditCompDt_h.Text = ""; 
} 
else 
{ 
    txtAuditCompDt_h.Text = ((DateTime)dtHeaders1.Rows[0]["AUDIT_COMPLETE_DT"]).ToString("d"); 
} 

는 문자열 변환의 일부를 생략하기 때문에이 좋습니다. 나는 최근 작업을 위해 다음을 고려해 왔지만, 같은 성능으로 작동하는지, 적어도 C# 6이 필요하기 때문에 스위치를 아직 만들지 않았습니다. 하지만 라인 :

이 에게
txtAuditCompDt_h.Text = dtHeaders1.Rows[0].Field<DateTime>("AUDIT_COMPLETE_DT")?.ToString("d") ?? ""; 
+0

[ToString]에 대한 로캘 문제와 [ToString ("d")'과의 차이점에 대해 궁금해합니다. [MSDN] (https://msdn.microsoft.com/en-us/library/system.datetime. ToShortdatestring (v = vs.110) .aspx) _ "ToShortDateString 메서드를 호출 한 결과는"d "를 형식 매개 변수로 사용하여 DateTime.ToString (String) 메서드를 호출하는 것과 같습니다. _ –

+0

예. 나는 ** 알고있다. ** 나는 1 년 전이나 그 전에 몇 가지 변칙을 읽었다. 그러나 나는 나의 대답과 함께 원래의 참조를 찾고있는 마지막 1/2 시간을 보냈다. 나는 여전히보고있어, 링크를 사용하거나 코멘트를 삭제하기 위해 편집을 끝낼 때까지 기다릴 것이지만, 그 부분은 무시한다. 카고 컬트 코딩을 사용하고 싶지 않습니다. –

관련 문제