オブジェクトiはデータベースからのものです。PrDTは文字列、PrDateTimeはDataTimeOffsetタイプ、null許容
vi.PrDT = i.PrDateTime.Value.ToString("s");
手っ取り早い方法は何ですか?他なら欲しくない…
条件演算子の使用:
vi.PrDT = i.PrDateTime.HasValue ? i.PrDateTime.Value.ToString("s") :
string.Empty;
拡張メソッドを実行できます:
public static class NullableToStringExtensions
{
public static string ToString<T>(this T? value, string format, string coalesce = null)
where T : struct, IFormattable
{
if (value == null)
{
return coalesce;
}
else
{
return value.Value.ToString(format, null);
}
}
}
その後:
vi.PrDT = i.PrDateTime.ToString("s", string.Empty);
string.Format("{0:s}", i.PrDateTime)
上記は、null の場合は空の文字列を返します。Nullable<T>.ToString
null 値をチェックし、そうであれば空の文字列を返し、それ以外の場合は文字列表現を返します (ただし、書式指定子は使用できません) 。トリックは、string.Format を使用することです。これにより、必要な書式指定子 (この場合はs
) を使用してもNullable<T>.ToString
動作を取得できます。
return (i.PrDateTime.Value ?? string.Empty).ToString();
テストしたところ、うまくいくようです。
return i.PrDateTime.Value.ToString("s") ?? string.Empty;