У меня есть переменная DateTime?, иногда значение null, как я могу вернуть пустую строку "", когда значение null или значение DateTime, если не null?
С# Nullable <DateTime> в строку
Ответ 1
string date = myVariable.HasValue ? myVariable.Value.ToString() : string.Empty;Ответ 2
Хотя многие из этих ответов верны, все они бесполезно сложны. Результат вызова ToString в nullable DateTime уже является пустой строкой, если значение логически null. Просто вызовите ToString на ваше значение; он будет делать именно то, что вы хотите.
Ответ 3
Собственно, это поведение по умолчанию для типов Nullable, которые без значения ничего не возвращают:
public class Test {
    public static void Main() {
        System.DateTime? dt = null;
        System.Console.WriteLine("<{0}>", dt.ToString());
        dt = System.DateTime.Now;
        System.Console.WriteLine("<{0}>", dt.ToString());
    }
}
это дает
<>
<2009-09-18 19:16:09>
Ответ 4
Вы можете написать метод расширения
public static string ToStringSafe(this DateTime? t) {
  return t.HasValue ? t.Value.ToString() : String.Empty;
}
...
var str = myVariable.ToStringSafe();
Ответ 5
Вызов .ToString() в Nullable<T>, который null вернет пустую строку.
Ответ 6
DateTime? d;
// stuff manipulating d;
return d != null ? d.Value.ToString() : String.Empty;
Ответ 7
Все, что вам нужно сделать, это просто вызвать .ToString(). Он обрабатывает объект Nullable<T> для значения null.
Вот источник .NET Framework для Nullable<T>.ToString():
public override string ToString() {
    return hasValue ? value.ToString() : "";
}
Ответ 8
DateTime? MyNullableDT;
....
if (MyNullableDT.HasValue)
{
    return MyNullableDT.Value.ToString();
}
return "";
Ответ 9
if (aDate.HasValue)
    return aDate;
else
    return string.Empty;
Ответ 10
DateTime d?;
string s = d.HasValue ? d.ToString() : string.Empty;
Ответ 11
Согласно документации Microsoft:
Текстовое представление значения текущего объекта Nullable, если свойство HasValue равно true, или пустая строка (""), если свойство HasValue имеет значение false.
