MVC3、Razor、C# を使用しています。
LINQ を含むいくつかの Razor コードがあります。リストから値を取得しようとします。List が null の場合もあります。現在、アプリケーションはこれが原因で null 例外を発生させています。つまり、「myCustomers」が null です。
コード:
Model.myCustomers.First().Name
基本的に「myCustomers」は次のように定義されます。
public List<Customer> myCustomers
また、「LINQ to Entity」クエリによって入力されます。
「myCustomers」が null の場合、かみそりコードがクラッシュしないようにするにはどうすればよいですか。プロパティごとに「if (Name!=null)」タイプのブロックをたくさん書きたくない。レイアウト設計の問題により、すべてのプロパティを反復処理することはできません。だから私は変更する必要があります:
Model.myCustomers.First().Name
何らかの方法で。
この質問があまり混乱しないことを願っています!
よろしくお願いします。
編集1
null を返さず、空のリストを返すというロジックが気に入っています。私は次のようなものを使用してみました
return this._myCustomers ?? Enumerable.Empty<Customers>().ToList();
「IF」ブロックではなく、Razor ページの LINQ の 1 行で空であることを何らかの方法でテストすることが理想的です。
編集2
public static TValue SafeGet<TObject, TValue>(
this TObject obj,
Func<TObject, TValue> propertyAccessor)
{
return obj == null ? default(TValue) : propertyAccessor(obj);
}
そう:
Model.myCustomers.FirstOrDefault().SafeGet(m=>m.Name)