LinQ.Contains
今天在寫Linq遇到個笨難關,結果搞了兩小時,才解決,真是夠暈得,趁現在還記得先Note下囉~ ^^
情境說明:針對類別內的特定Property,作like處理。
需求說明:針對Shops這個清單中其ItemName含有【colthes】取出作顯示。
工具:LINQ PAD
本來程式碼如下,結果卻發生圖一的錯誤!!,這個甚麼回事阿!!
shops.Add(new Shop{ItemName="food",ItemCoust=1000}); shops.Add(new Shop{ItemName=null,ItemCoust=3000}); shops.Add(new Shop{ItemName="colthes",ItemCoust=2000}); shops.Where(x=>x.ItemName.Contains("colthes")).Dump();
圖一:
相信有看到這篇的大大,肯定都有答案了八~ QAQ,
這個問題原因是因為Lambda會針對清單內的資料做Serach,但清單內,卻有一筆資料其ItemName卻是【null】,
【null】的變數,怎麼能夠做比對阿,那麼如何改善這個問題,當然就是做個判斷就好了阿!
修改後的程式碼如下:
shops.Add(new Shop{ItemName="food",ItemCoust=1000}); shops.Add(new Shop{ItemName=null,ItemCoust=3000}); shops.Add(new Shop{ItemName="colthes",ItemCoust=2000}); shops.Where(x=>x.ItemName !=null && x.ItemName.Contains("colthes")).Dump();
最後的結論就是,處理問題時,先別急得處理問題,而是要先了解錯誤訊息,然後再想為何,然後再動手處理!!
Dotblogs 的標籤: LINQ