2013-02-25 48 views
0
IEnumerable<ColorRow> result = (from a in Fruit.Apple.Colors where (a.color == "red") select a); 

如果我嘗試使用result.Any()或Count()它會拋出異常,當沒有結果返回時,我明白上面的ColorRow將爲null,但我該如何檢查?IEnumerable任何或計數拋出異常

將更改上面的var結果幫助它等於Colrow result = new ColorRow ??

不知道如何處理IEnumerable上面的空值,爲空。

我目前正在嘗試使用,但看起來並不乾淨。

try 
{ 
result.FirstOrDefault().Color= "pink"; 
return true; 
} 
catch 
{ 
return false; 
} 
+0

'null'!=空!請顯示引發異常的實際代碼,並告訴我們它是什麼異常 - 以及它的錯誤消息是什麼。 – 2013-02-25 10:51:13

+0

@ Daniel:Result.FirstOrDefault()拋出NullreferenceException:未將對象引用設置爲實例。 – Gauls 2013-02-25 15:00:08

回答

0

我目前使用try和catch,但似乎並不乾淨。

代替try catch,您可以檢查對象爲null,然後比較顏色。

var temp = result.FirstOrDefault(); 
if(temp != null && temp.Color == "Pink") 
    return true; 
else 
    return false; 

對於其他的問題就AnyCount你確定你的代碼被編譯,因爲你似乎是查詢Fruit.Apple.Colors,你創建的ColorRow IEnumerable的,它應該是:

IEnumerable<Color>.... 

(如果使用隱含類型(var)正在解決問題,則可能是您在分配中使用了錯誤類型)

+0

Result.FirstOrDefault()拋出NullreferenceException:未將對象引用設置爲實例。假設可以初始化ColorRow,如果有任何行匹配,否則不會,我如何找到而不是捕捉對象爲空的異常? – Gauls 2013-02-25 14:56:32