I'm reading back a nullable DateTime?
property then assigning that value to a string property in short date format.
I can convert the date time value to a short date string and assign to the IT_Date_String
property. But I'm not sure how to assign a ""
value to the string if the IT_Date
is null.
How can you convert a datetime? value to string.empty when datetime? is null?
This is the assignment in 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();
And the properties in the model:
public DateTime? IT_Date { get; set; }
public string IT_Date_String { get; set; }
You're calling the IT_Date.Value.ToString(...)
regardless of whether IT_Date
actually has a value.
So you need to turn the expression around:
r.IT_Date.HasValue ? r.IT_Date.Value.ToString(...) : ""
This way ToString()
will only be called when IT_Date
has a value.
You can also implement this in the getter, as mentioned in a now-deleted comment:
public string IT_Date_String
{
get
{
return IT_Date.HasValue ? IT_Date.Value.ToString(...) : "";
}
}
This way you won't have to reimplement the logic everywhere you access this model, and as a bonus, it will only be executed when it's actually requested.
There's also no need to explicitly use String.Empty
, the string ""
will be interned to the same at runtime.