我面临错误无法将对象从DBNull强制转换为其他类型。
即使遇到相同的DBNull错误,我也尝试输入null值。如何处理此错误?
List<string> List = new List<string>();
List = (from r in Dt.AsEnumerable()
orderby Convert.ToDateTime(r["StartDate"]) descending
select r["name"] + string.Empty).ToList();
答案 0 :(得分:2)
由于您正在处理LINQ-to-Objects,因此可以使用自己的自定义转换,也许像这样:
static DateTime? CustomParseDateTime(object value) {
if(value == null || value is DBNull) return null;
return Convert.ToDateTime(value);
}
和
orderby CustomParseDateTime(r["StartDate"])
答案 1 :(得分:-1)
没问题。以下代码将解决您的问题,不需要任何其他方法,并且与Mark Gravell的解决方案不同,它可以处理r [“ name”]。
var list = new List<string>();
list = (from r in Dt.AsEnumerable()
orderby Convert.ToDateTime(r["StartDate"] == DBNull.Value ? "1/1/1" : r["StartDate"].ToString()) descending
select (r["name"] == DBNull.Value ? string.Empty : r["name"].ToString())).ToList();
1/1/0001是DateTime的默认值。因此,如果r [“ StartDate”] == DBNull.Value,则表达式的计算结果将与“ new DateTime()”相同。
祝你好运!