DbComparisonExpression需要具有可比較類型的參數。

前幾天用EF框架+oracle數據庫,在使用Linq查詢所需要的數據時,運行時,遇到一個沒見過的錯誤,去百度了一波,結果去沒有任何收穫,百度上相關的錯誤內容很少,並沒有什麼收穫。直接貼出異常代碼:
這裏寫圖片描述

於是放棄從百度找答案,自己試試。不出所料,倒是發現了一些問題:
這裏寫圖片描述

這裏注意我劃的紅圈:
js.qszt這個權屬狀態的類型爲decimal? ,注意還不是decimal.第一張圖我直接用的是Equals(“1”),顯然這兩個類型不一致,一個是數字,一個是字符串,怎麼能作比較呢?(當然這是數據庫設計坑的我,及表的都有的這個字段類型不一致···我哭0.0),然後我想到先把qszt這個轉換爲字符串在比較,結果可想而知,Linq不支持Tostring()方法。
當然我也想到了用臨時變量把js.qszt存起來,然後再去比較,可是就比較個這個,至於嘛。所以果斷放棄這個想法。最後貼上解決的代碼:
這裏寫圖片描述

好的沒錯,不用Equal()方法,直接==簡單粗暴。
至於原因,大概在調試的時候能知道了,在我用qszt.Equal(“1”)方法,把”1”換成1的時候(qszt.Equal(1)),以爲這樣就可以了。

結果:xxxxxx不是基元類型的錯誤又出現了,這下錯誤大概清楚了。
大概是decimal? 不是C#基礎類型,可能是不能用Equal()方法比較吧。我只說大概哦。錯了請大神指正。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章