2

オブジェクトiはデータベースからのものです。PrDTは文字列、PrDateTimeはDataTimeOffsetタイプ、null許容

vi.PrDT = i.PrDateTime.Value.ToString("s");

手っ取り早い方法は何ですか?他なら欲しくない…

4

5 に答える 5

9

条件演算子の使用:

vi.PrDT = i.PrDateTime.HasValue ? i.PrDateTime.Value.ToString("s") :
                                  string.Empty;
于 2012-12-13T19:55:10.037 に答える
5

拡張メソッドを実行できます:

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);
于 2012-12-13T20:02:43.417 に答える
2
string.Format("{0:s}", i.PrDateTime) 

上記は、null の場合は空の文字列を返します。Nullable<T>.ToStringnull 値をチェックし、そうであれば空の文字列を返し、それ以外の場合は文字列表現を返します (ただし、書式指定子は使用できません) 。トリックは、string.Format を使用することです。これにより、必要な書式指定子 (この場合はs) を使用してもNullable<T>.ToString動作を取得できます。

于 2012-12-13T20:43:35.230 に答える
2
return (i.PrDateTime.Value ?? string.Empty).ToString();

テストしたところ、うまくいくようです。

于 2012-12-14T11:08:06.713 に答える
-1
return i.PrDateTime.Value.ToString("s") ?? string.Empty;
于 2012-12-13T19:59:39.040 に答える