我们有一个自定义对象,我正在尝试从数据集中分配和填充该对象。除非datetime字段中没有NULL值,否则它将正常工作。
这是对象示例:
Linking.canOpenURL('market://details?id=com.inova.velocity')
.then((canOpen) => {
if (canOpen) {
console.log('open app');
return Linking.openURL('market://details?id=com.inova.velocity')
};
}).catch(err => console.log('An error occurred', err));
我们想知道,如果值是null,如何最好地解析分配任何值:
public class Test
{
public DateTime Date1{ get; set; }
public DateTime Date2{ get; set; }
}
以下内容在为null时引发异常(应如此)。只是想知道最佳实践来解决这个问题?请注意,由于有外部应用,我们不能使用可为空的datetime(datetime?)。
理想的是,我们不希望将日期时间分配为null
答案 0 :(得分:0)
您可能想要分配一些默认值,例如:
Date1 = rw?["StartDate"]==null?DateTime.MinValue:Convert.ToDateTime(rw?["StartDate"]);
或者忽略具有空值的那些
var convertedList = (from rw in dt2.AsEnumerable() where rw["StartDate"] != null && rw["EnDate"] != null
select new Test()
{
Date1 = (rw["StartDate"] == null ? Convert.ToDateTime(rw["StartDate"]) : new DateTime()),
Date2 = (rw["EndDate"] == null ? Convert.ToDateTime(rw["EndDate"]) : new DateTime())
}).ToList();
答案 1 :(得分:0)
您可以检查NULL并替换为所需的日期。
var convertedList = (from rw in dt2.AsEnumerable()
select new Test()
{
Date1 = (rw["StartDate"] == null ? Convert.ToDateTime(rw["StartDate"]) : new DateTime()),
Date2 = (rw["EndDate"] == null ? Convert.ToDateTime(rw["EndDate"]) : new DateTime())
}).ToList();
答案 2 :(得分:-1)
您是否可以使用DateTime.TryParse尝试将字符串转换为dateTime,但如果不能,则将使用dateTime.minValue?
答案 3 :(得分:-1)
您要对输入值进行完整性检查吗?如果是这样,我所谓的“被动错误报告”可能就是这种方式。
INotifyDataErrorInfo的全部目的是向用户介绍问题-并允许您在提交之前检查是否有错误-无需“重新排序”为异常。
您经常在WPF中使用它,在WPF中,可能要求ViewModel接受数字的可为空值甚至是字符串(出于完全视图的原因),但是Model不能接受Null值或经过解析的整数。