2017-01-10 8 views
0

私はDataAdapter(これはOracleですが、それは問題ではありません)を使って作業していますが、1つの特定のフィールドを取得しようとしています。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は、DateTimeフィールドです。私はそれを "mm/dd/yyyy"形式のテキストボックスに入れる必要があります。こので動作しますが、私はより良い/より効率的で不潔な方法があると信じる必要があります。

誰も私がこれをまっすぐに助けることができますか?私は自分が何をしているのか分かっていれば、最後の10行のコードが1行で済むような気がしますか? 。日付は常にに充填されていないので、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

「ToShortDateString」のロケール問題と、ToString( "d") 'との相違点については、[MSDN](https://msdn.microsoft.com/en-us/library/system.datetime。 ToShortdatestring(v = vs.110).aspx)_ "ToShortDateStringメソッドを呼び出した結果は、フォーマットパラメーター" _ –

+0

ええ、 "dを" DateTime.ToString(String)メソッドで呼び出すのと同じです。私は**知っている**私はこれを1年ほど前に読んだことがあるが、最後の1/2時間を私の答えに含める元の参考文献を探して過ごした。私はまだ見ているので、私は、リンクを使って、またはコメントを削除するために、私は、答えを編集するために完了するまで待つだろうが、現時点ではその部分を無視します。私はカーゴカルトコーディングを有効にしたくありません。 –

関連する問題