2012-03-16 14 views
0

フォースエンティティはnullを返すように私は建物が空であるならば、我々はexcpetion COSがnull右のプロパティをアクセスもできません得たコード場合singleResultスロー例外

return (EseshEntities.Current.Users.Select(u => new { Comunity = u.Apartment.Building.District.City })).ToList(); 

を以下のがありますか? が存在しますが、エンティティにエンティティの任意のオプションがあります。ヌルだけを返すため、プロパティ が存在しない場合はnullを返しますか?

+0

ヌル値を返さないように選択する前にwhere節を作成するだけではどうですか? –

+0

Selectの代わりにDefaultIfEmptyを使用 –

+0

Comunity = nullにするかどうかにかかわらず、彼はすべてのユーザーを望んでいると思います。私はnullのチェックを回避することはできないと思う。 – KroaX

答えて

2

何を?

return (EseshEntities.Current.Users.Select(u => new { Comunity = u.Apartment.Building ==null?null:u.Apartment.Building.District.City })).ToList(); 
+0

同意すると、別の方法があるようには思われない – KroaX

+0

yeeしかし、私たちはu.Apartment.Building.District.Cityの4つのプロパティを持っているので、これはすべてをチェックするのに本当に複雑に見えます。オプションは、もしforeigキーがnullであってもnullならデフォルトです。 – kosnkov

+0

プロパティはメソッドのラッパーだけなので、インスタンスを持たない場合は非静的メソッドを呼び出すことはできません –

1

あなたはこのような何か試すことができます。

var list = (from u in EseshEntities.Current.Users 
      where u.Apartment.Building != null 
      select new { Comunity = u.Apartment.Building.District.City }).ToList(); 
return list; 

か、この試すことができます。これについて

return (EseshEntities.Current.Users.Select(u => new { Comunity = u.Apartment.ToInstance().Building.ToInstance().District.ToInstance().City })).ToList(); 

public static T ToInstance<T>(this T self) 
{ 
    T mySelf = default(T); 

    if (self != null) 
     mySelf = self; 
    else 
     mySelf = Activator.CreateInstance<T>(); 

    return mySelf; 
} 
+0

のキーを持っていなくてもすべての行が必要なので、私はuserNameやその他のようなユーザーのいくつかのプロパティについても質問しますそれらのユーザーだけが建物を所有していないことを除外します。 – kosnkov

+0

私は、エンティティクラスのcustructorで各プロパティを初期化しようとしましたか?そうすれば、彼らはヌルではない。 –

+0

自分のコードを変更しました。あなたに役立つ変更を参照してください。 –

関連する問題