1

私は匿名クラスを返しています:

var clients = from c in this.ClientRepository.SearchClientByTerm(term, 10)
    select new
    {
       id = c.Id,
       line1 = c.Address.Line1 ?? "Unknown Information ..."
    };

問題は Address が nullable であることです。つまり、それが null の場合、100 万個に爆発します。

私が考えることができる最もエレガントな解決策はこれでした...

    line1 = c.Address != null && c.Address.Line1 != null 
               ? c.Address.Line1 : "Unknown Information ..."

より良い方法はありますか?、null 合体演算子を使用する機能を失い、null かどうかを確認する必要があるのは好きではありません。

4

3 に答える 3

1

私が考えることができる唯一のクリーンな方法は、Addressプロパティのゲッターを変更して null を返さないようにするか、コンストラクターに常にAddress. それ以外の場合は、常に null をチェックする必要があります。

于 2010-11-09T12:36:51.433 に答える
1

私はこれしか考えられませんでした:

line1 = c.Address.HasValue ?  c.Address.Line1.HasValue ? c.Address.Line1 : "Line1 unknown." : "Address unknown."

また、Address プロパティの get{} メソッドを変更して内容をチェックし、適切な値を返すこともできます。できれば結果をキャッシュして、同じチェックを何度も実行しないようにすることもできます。

于 2010-11-09T12:37:56.990 に答える
0

初期化された(おそらく)そこに設定されたものをClientRepository.SearchClientByTerm()返します。AddressLine1

于 2010-11-09T12:44:56.600 に答える