我使用DataTable
进行以下查询给出错误:
“无法将'System.DBNull'类型的对象强制转换为'System.String'”
var specList = (from r in dt.AsEnumerable()
where (decimal)r["stdyear"] == 0 && (string)r["SPECLIZATION"] != null
select r["SPECLIZATION"]).Distinct().ToList();
SPECLIZATION可能是:
我该如何解决这个问题?指导我。
答案 0 :(得分:1)
对于r["SPECLIZATION"]
,它可以为null,但在检查它是否为null之前,首先将其转换为字符串,因此例外抛出:无法转换类型' System.DBNull&的对象#39;输入' System.String'
var specList = (from r in dt.AsEnumerable()
where r.Field<decimal>("stdyear") == 0 && r.Field<string?>("SPECLIZATION").HasValue
select r.Field<string?>("SPECLIZATION").Value).Distinct().ToList();
答案 1 :(得分:0)
尝试将(string)r["SPECLIZATION"] != null
投射到DBNull
时,此string
失败,只需执行此操作:
r["SPECLIZATION"] != DBNull.Value
答案 2 :(得分:-1)
只需使用.ToString(),它可以正常工作:)
var specList = (from r in dt.AsEnumerable()
where r["stdyear"].ToString() == "0" && r["SPECLIZATION"].ToString() != ""
select r["SPECLIZATION"]).Distinct().ToList();
答案 3 :(得分:-1)
试试这个:
= dt.AsEnumerable().where(r=> r.Field<decimal>("stdyear") == 0 && r.Field<string> "SPECLIZATION") !=NULL).select(s=> s.Field<string>("SPECLIZATION")).Distinct().ToList();