dtUnit1中有一列是"得分",为了获取得分高于60的记录,用linq进行查询. DataTable dtUnit1=new DataTable();
...//向dtUnit1中填入数据
var dtUnit1topPerc = from items in dtUnit1.AsEnumerable()
where items.Field<double>("得分") > 60
orderby (items.Field<double>("得分"))
select items;问题是某些记录的"得分"可能为空,这样执行上面语句时就会爆"无法将 DBNull.Value 强制转换为类型“System.Double”。请使用可空类型。"请问如何解决
...//向dtUnit1中填入数据
var dtUnit1topPerc = from items in dtUnit1.AsEnumerable()
where items.Field<double>("得分") > 60
orderby (items.Field<double>("得分"))
select items;问题是某些记录的"得分"可能为空,这样执行上面语句时就会爆"无法将 DBNull.Value 强制转换为类型“System.Double”。请使用可空类型。"请问如何解决
where items.Field <double?>("得分").Value > 60
orderby items.Field <double?>("得分")
select items;其实DataTable.Rows中的Row存储数据是object的,所以你上面可能要改一下改成这样var dtUnit1topPerc = from items in dtUnit1.AsEnumerable()
where int.Parse(items.Field <object>("得分").ToString()) > 60
orderby items.Field <object>("得分")
select items;