对象 i 来自数据库。PrDT 为字符串,PrDateTime 为 DataTimeOffset 类型,可为空
vi.PrDT = i.PrDateTime.Value.ToString("s");
什么是快速方法?我不想要 if else 等...
使用条件运算符:
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)
如果它为空,上面将返回一个空字符串。由于Nullable<T>.ToString
检查空值并返回空字符串,否则返回字符串表示形式(但不能使用格式说明符)。诀窍是使用 string.Format,它允许您使用所需的格式说明符(在本例中为s
)并仍然获得Nullable<T>.ToString
行为。
return (i.PrDateTime.Value ?? string.Empty).ToString();
刚刚测试,它似乎工作。
return i.PrDateTime.Value.ToString("s") ?? string.Empty;