2016-09-28 11 views
2

nullable DateTime?プロパティを読み込み、その値を短い日付形式の文字列プロパティに割り当てます。datetimeがnullの場合、null可能なdatetime値をstring.emptyに変換する方法はありますか?

日付時刻の値を短い日付の文字列に変換し、IT_Date_Stringプロパティに割り当てることができます。しかし、IT_Dateがnullの場合、""の値を文字列に割り当てる方法がわかりません。

datetimeをどのように変換できますか? datetimeの場合はstring.emptyに値を設定しますか?無効である?

var status_list = query_all.ToList().Select(r => new RelStatus 
{ 
    IT_Date_String = r.IT_Date.Value.ToString("yyyy-MM-dd") != null ? r.IT_Date.Value : null 
}).ToList(); 

とモデルのプロパティ:あなたは関係なく、IT_Dateが実際に価値があるかどうかのIT_Date.Value.ToString(...)を呼んでいる

public DateTime? IT_Date { get; set; } 
public string IT_Date_String { get; set; } 

答えて

11

これは、LINQでの割り当てがあります。

だから、あなたの周りの表現をオンにする必要があります。IT_Dateが値を持っているとき

r.IT_Date.HasValue ? r.IT_Date.Value.ToString(...) : "" 

こうToString()にのみ呼び出されます。

また、今では削除されたコメントで述べたように、ゲッターでこれを実装することができます。

public string IT_Date_String 
{ 
    get 
    { 
     return IT_Date.HasValue ? IT_Date.Value.ToString(...) : ""; 
    } 
} 

あなたはどこでもあなたがこのモデルにアクセスするロジックを再実装する必要はありません。この方法で、ボーナスなど実際に要求されたときにのみ実行されます。

さらにno need to explicitly use String.Empty, the string "" will be interned to the same at runtimeもあります。

+0

私はモデルプロパティへの変換を注入するというアイデアが好き。しかし、私がそれをしたとき、割り当ては私に 'IT_Date_String'が読み込み専用だと伝えます。その文字列プロパティにもセッターを追加する必要がありますか? –

+0

Like: 'IT_Date_String = r.IT_Date'は、その割り当ては読み込み専用だと言います。 –

+0

文字列を 'IT_Date_String'プロパティに代入して日付を設定したい場合は、文字列をDateTimeに変換し、それを' IT_Date'プロパティに代入するセッタも必要です。 – CodeCaster

5

C#6で、あなたはこれを行うことができます。左側のものがnull

IT_Date_String = r.IT_Date?.ToString("yyyy-MM-dd") ?? String.Empty; 

新しい?かどうかをチェックすることがある場合、式はnullに評価されます。そうでない場合は、評価を続けるだけです。

次に、??は、最初の式の結果がnullであるかどうかを確認します。IT_Dateがnullの場合はそれになります。そうであれば、String.Emptyと評価してください。あなたが使用することができますC#6.0とヌル伝播に

3

IT_Date_String = r.IT_Date?.ToString("yyyy-MM-dd") ?? String.Empty 
1

この1は、フレームワークのすべてのバージョンで動作します:

IT_Date_String=string.Format("{0:yyyy-MM-dd}",IT_Date); 
+0

真実ですが、少なくともyyyy-MM-ddは日付/時刻追跡の常識的な理解を使用して、より有効かもしれません。 :) – decPL

+1

これを指摘してくれてありがとう、私は私の答えを修正しました。おそらく、生パターンの代わりにCultureInfoを使用するほうが良いでしょうが、それは疑問の対象外です – cyberhubert

関連する問題