私のC#アプリケーションには、「person」データを含むdatagridviewがあります。これは、このdatagrisviewのデータソースがクラスpersonのIListで設定されていることを意味します。
私の個人モデルは、次のフィールドで構成されています(datagridviewではなくモデルのみ)。
string foreName
string surname
int devisionId
int someOtherId
Organisation orga
組織は、NHibernateと1対多としてマッピングされるもう1つのモデルです。とりわけ、組織は文字列で構成されています。
string orgaName
ここで、(私にとって)トリッキーな部分があります。...私のdatagridviewでは、すべての人のフィールドを持ちたくはありません。次のものを持ちたいだけです。
foreName
surname
orga.orgaName
最初の2つのフィールドを取得するのは簡単です。
dataGridView.DataSource = listOfPersons.Select(x => new { ForeName = x.ForeName, SurName = x.Surname}).ToList();
これは今のところ問題なく機能しますが、datagridview内に組織の名前も含めたいので、これを試しました。
dataGridView.DataSource = listOfPersons.Select(x => new { ForeName = x.ForeName, SurName = x.Surname, OrganisationName = x.Organisation.organName}).ToList();
これは、すべての人が組織を持っている場合にもうまく機能しますが、それは事実ではありません。一部の人は組織を持っていないため、「Organization」はnullであり、Organisation.organNameを取得しようとするとnullpointerexeptionで終了します。
ここでの質問は、datagridview-datasourceのselectステートメントを記述して、Organizationがnullでない場合に組織名が表示されるようにするにはどうすればよいですか。そうでない場合は、datagridviewに他の何かが出力されます(例:利用可能な組織がありません)。