2016-10-14 27 views
1

我试图将字符串转换为DateTime?使用DateTime.Parse()但只有当字符串不为空时。我试图使用空,条件运算符正确使用空条件运算符与DateTime.Parse()

这就是我试图取代:

string maxPermissableEndDate = response.Contract.ReferenceFields.FirstOrDefault(t => t.code == "MAX_EXT_DATE")?.Value; 

if (!string.IsNullOrEmpty(maxPermissableEndDate)) 
{ 
    contract.MaximumPermissableEndDate = DateTime.Parse(maxPermissableEndDate); 
} 

我如何分配给可空的DateTime属性MaximumPermissableEndDate只有这种有吸引力的方式当变量maxPermissableEndDate不为空?

这是我期待在从C#6.0文档中的例子:

string result = value; 

if (value != null) // Skip empty string check for elucidation 
{ 
    result = value.Substring(0, Math.Min(value.Length, length)); 
} 

了替代的幸福:

value?.Substring(0, Math.Min(value.Length, length)); 

回答

0

你可以做到这一点是这样的:

contract.MaximumPermissableEndDate = string.IsNullOrEmpty(maxPermissableEndDate) ? 
    contract.MaximumPermissableEndDate 
    : new Nullable<DateTime>(DateTime.Parse(maxPermissableEndDate)); 
2

这不使用空COALESCE运营商的事,但喜欢这个?

DateTime attemptParseDate; 
contract.MaximumPermissableEndDate = 
DateTime.TryParse(maxPermissableEndDate, out attemptParseDate)? 
    attemptParseDate : (DateTime?) null;