2011-07-29 1 views
0

私はラムダ式を使用して、whereと条件付きでアドレスコレクションをカウントします。 一部のaddresscollectionオブジェクトにはNULL値があります。何らかの理由で私はオブジェクトのインスタンスに設定されていないオブジェクトを取得しています。例外を調べると、{Name = "Boolean" FullName = "System.Boolean"}の戻り型が見つかり、パラメータ{Boolean}が返されます。この例外を処理する方法に関するアイデア。ここ は、私が使用していた私のラムダ式である:オブジェクトはラムダ式を使用してオブジェクトのインスタンスに設定されていません

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

答えて

1

コレクションがヌルであるか、コードの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

のaddresscollectionには、いくつかのコードがnullである1000レコードがありますが、NULLであるコードの数とA、S、Qを持つコードの数を取得したいと思います。 – user855408

+0

ジミー、返事のために多くの感謝と私の問題を解決しました。私はラムダ式が初めてです。あなたはコード** addresscollection == nullについて教えてください。 0:**はあなたの返事を意味します。 – user855408

+0

? :はC#の "IIF"演算子です。三項演算子です。最初の部分は "if"文、二番目は真の場合の戻り値、三番目の場合はfalseの場合の戻り値です。この場合、コレクションがnullの場合、 'codes'はゼロになります。そうでなければ、この行の残りの結果になります。 –

0

これはあなたの例外をスローラインであれば、addressCollection自体のいずれかがnullの場合、またはそれがnull要素が含まれている、または要素の一つが、中にはnullが含まれていますCodeプロパティ

+0

アドレスコレクションにはいくつかの要素があります。 – user855408

+0

その後、ジミーの答えに追加すると、次のようになります: 'var codes = addresscollection == null? 0:addresscollection.Count(n => n!= null && n.Code!= null &&(n.Code.Contains( "A")|| n.Code.Contains( "S")|| n.Code。 Contains( "Q")); 'これは、コレクション自体がnullでないことを保証し、コードを調べる前に各要素をnullにチェックします。 –

+0

私は** addresscollection.Where(n => n.Code.Contains( "A")|| n.Code.Contains( "S")|| n.Code.Contains( "Q ( "A")|| n.Code.Contains();)))。)Count()**および** addresscollection.Count(n => n!= null && n.Code!= null && ( "S")|| n.Code.Contains( "Q"))); ** – user855408

関連する問題