2011-07-29 36 views
0

我使用帶有where條件的lambda表達式來獲取對地址集合的計數。 一些addresscollection對象對它有空值。出於某種原因,我正在將對象設置爲對象的實例。當我深入研究異常時,發現返回類型爲{Name =「Boolean」FullName =「System.Boolean」}並返回參數{Boolean}。關於如何處理這個異常的想法。 這裏,我用我的lambda表達式:對象未設置爲使用lambda表達式的對象的實例

var codes = (addresscollection.Where(n => n.Code.Contains("A") || n.Code.Contains("S") || n.Code.Contains("Q"))).Count() 

回答

1

集合爲空或其中一個代碼爲空。

var codes = addresscollection == null ? 0 : 
      addresscollection.Count(n => n.Code != null && (
             n.Code.Contains("A") || 
             n.Code.Contains("S") || 
             n.Code.Contains("Q"))); 
+0

在地址收集中,我有1000條記錄,其中一些代碼爲空,但希望獲得空的代碼數和具有A,S,Q的代碼數。 – user855408

+0

Jimmy,非常感謝答覆,它確實解決了我的問題。我是lambda表達式的新手。請教你解釋一下代碼** addresscollection == null是什麼? 0:**表示在您的回覆中。 – user855408

+0

The? :是C#中的「IIF」操作符。它是一個三元運算符,其中第一部分是「if」語句,第二部分是返回值(如果爲true),第三部分是返回值(如果爲false)。在這種情況下,它表示如果集合爲空,那麼'codes'將爲零,否則它將是該行其餘部分的結果。 –

0

如果是這樣的拋繩的例外,那麼無論addressCollection本身爲空,或者它包含空的元素,或元素的一個包含空Code屬性。

+0

在地址集合中有一些元素爲null。 – user855408

+0

然後添加到Jimmy的答案,它必須是這樣的:'var codes = addresscollection == null? 0:addresscollection.Count(n => n!= null && n.Code!= null &&(n.Code.Contains(「A」)|| n.Code.Contains(「S」)|| n.Code。包含(「Q」)));'這將確保集合本身不爲空,並在嘗試查看代碼之前檢查每個元素爲null。 –

+0

我想知道** addresscollection.Where(n => n.Code.Contains(「A」)|| n.Code.Contains(「S」)|| n.Code.Contains(「Q」 「)))。Count()**和** addresscollection.Count(n => n!= null && n.Code!= null &&(n.Code.Contains(」A「)|| n.Code.Contains (「S」)|| n.Code.Contains(「Q」))); ** – user855408

相關問題