XML元素,當我收到試圖訪問,這並不使用LINQ存在的XML元素時出現以下錯誤:的NullReferenceException引用不存在
型「System.NullReferenceException」的第一次機會異常發生在Test.exe System.NullReferenceException中的 :對象引用 未設置爲對象的實例。
bool exists = website.Parent
.Element("Exclusions")
.Elements("Exclusion")
.Where(x => thisKeyword.ToUpper().Contains((string)x.Value.ToUpper() ?? "~"))
.Any();
我可以簡單地使用.Where(x => thisKeyword.Contains((string)x))
解決這個問題,但我需要兩個thisKeyword
和XML元素值轉換(如果存在的話),以大寫字母來獲得一個區分大小寫的比較。
我的印象是,?? "~"
意味着「如果什麼左邊是空的使用什麼是正確的,所以在這種情況下x
應該成爲波浪線,因此不驗證對thisKeyword
(因爲它不會永遠包含波浪號) 。粗方法,我同意...但它甚至不工作
我怎樣才能防止在NullReferenceException異常
的【什麼是一個NullReferenceException,如何解決呢?]可能的複製(HTTP://計算器.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix-it) –
看看什麼是null,thisKeyword,x或x.Value會殺了你。必須先進行空檢查。 –
我認爲你可以使用下面的代碼'thisKeyword?.ToUpper()。包含((串)X?.Value.ToUpper()?「〜」)'檢查這兩個不爲空 – ganchito55