当日期时间为空时,如何将可为空的日期时间值转换为 string.empty?
How to convert a nullable datetime value to string.empty when datetime is null?
我正在读回一个可为 null 的 DateTime?
属性,然后将该值分配给短日期格式的字符串 属性。
我可以将日期时间值转换为短日期字符串并分配给 IT_Date_String
属性。但是,如果 IT_Date
为空,我不确定如何将 ""
值分配给字符串。
如何转换日期时间?值 string.empty 日期时间?是否为空?
这是linq中的赋值:
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();
模型中的属性:
public DateTime? IT_Date { get; set; }
public string IT_Date_String { get; set; }
无论 IT_Date
是否真的有值,你都在调用 IT_Date.Value.ToString(...)
。
所以你需要把表达式反过来:
r.IT_Date.HasValue ? r.IT_Date.Value.ToString(...) : ""
这样 ToString()
只会在 IT_Date
有值时被调用。
您也可以在 getter 中实现此功能,如现已删除的评论中所述:
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。
在 C# 6 中,您可以这样做:
IT_Date_String = r.IT_Date?.ToString("yyyy-MM-dd") ?? String.Empty;
新的?
检查左边的东西是否为空,如果是,表达式的计算结果为null
。如果没有,它只是继续评估。
然后,??
检查第一个表达式的结果是否为 null
,如果 IT_Date
为空,则结果为 null
。如果是,则评估为 String.Empty
.
使用 C# 6.0 和 null 传播,您可以使用:
IT_Date_String = r.IT_Date?.ToString("yyyy-MM-dd") ?? String.Empty
这个可以在任何版本的框架中工作:
IT_Date_String=string.Format("{0:yyyy-MM-dd}",IT_Date);
我正在读回一个可为 null 的 DateTime?
属性,然后将该值分配给短日期格式的字符串 属性。
我可以将日期时间值转换为短日期字符串并分配给 IT_Date_String
属性。但是,如果 IT_Date
为空,我不确定如何将 ""
值分配给字符串。
如何转换日期时间?值 string.empty 日期时间?是否为空?
这是linq中的赋值:
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();
模型中的属性:
public DateTime? IT_Date { get; set; }
public string IT_Date_String { get; set; }
无论 IT_Date
是否真的有值,你都在调用 IT_Date.Value.ToString(...)
。
所以你需要把表达式反过来:
r.IT_Date.HasValue ? r.IT_Date.Value.ToString(...) : ""
这样 ToString()
只会在 IT_Date
有值时被调用。
您也可以在 getter 中实现此功能,如现已删除的评论中所述:
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。
在 C# 6 中,您可以这样做:
IT_Date_String = r.IT_Date?.ToString("yyyy-MM-dd") ?? String.Empty;
新的?
检查左边的东西是否为空,如果是,表达式的计算结果为null
。如果没有,它只是继续评估。
然后,??
检查第一个表达式的结果是否为 null
,如果 IT_Date
为空,则结果为 null
。如果是,则评估为 String.Empty
.
使用 C# 6.0 和 null 传播,您可以使用:
IT_Date_String = r.IT_Date?.ToString("yyyy-MM-dd") ?? String.Empty
这个可以在任何版本的框架中工作:
IT_Date_String=string.Format("{0:yyyy-MM-dd}",IT_Date);