[英]'Unable to cast object of type' in linq query
我有以下查詢,使用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();
規格可能是:
我怎么解決這個問題? 引導我。
對於r["SPECLIZATION"]
,它可以為null,但是在您檢查它是否為null之前,必須先將其轉換為字符串,因此例外拋出:無法將類型為'System.DBNull'的對象轉換為類型為'System 。串'
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();
嘗試將DBNull
(string)r["SPECLIZATION"] != null
轉換為string
,此(string)r["SPECLIZATION"] != null
失敗,只需執行以下操作:
r["SPECLIZATION"] != DBNull.Value
只需使用.ToString(),它就可以正常工作:)
var specList = (from r in dt.AsEnumerable()
where r["stdyear"].ToString() == "0" && r["SPECLIZATION"].ToString() != ""
select r["SPECLIZATION"]).Distinct().ToList();
嘗試這個:
= dt.AsEnumerable().where(r=> r.Field<decimal>("stdyear") == 0 && r.Field<string> "SPECLIZATION") !=NULL).select(s=> s.Field<string>("SPECLIZATION")).Distinct().ToList();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.