簡體   English   中英

LINQ查詢中的'無法轉換類型的對象'

[英]'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();

規格可能是:

  • ENG
  • 空值
  • 數學

我怎么解決這個問題? 引導我。

對於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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM