0

私の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に他の何かが出力されます(例:利用可能な組織がありません)。

4

2 に答える 2

2

dataGridView.DataSource = listOfPersons.Select(x => new { ForeName = x.ForeName, SurName = x.Surname, OrganisationName = x.Organisation == null ? "None" : x.Organisation.organName}).ToList();

于 2013-01-28T14:12:20.243 に答える
1

これを試して :

dataGridView.DataSource = listOfPersons.Select(x => new { ForeName = x.ForeName, SurName = x.Surname, OrganisationName = x.Organisation != null ? x.Organisation.organName : "No organisation available"}).ToList();
于 2013-01-28T14:13:38.467 に答える