LinQ.Contains

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();

圖一:

image

相信有看到這篇的大大,肯定都有答案了八~ 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 的標籤: