0

在我的 C# 应用程序中,我有一个带有“person”数据的 datagridview,这意味着这个 datagrisview 的数据源是使用类 person 的 IList 设置的。

我的人模型包含以下字段(只是模型,而不是 datagridview):

string foreName
string surname
int devisionId
int someOtherId
Organisation orga

组织是另一种与 NHibernate 映射为一对多的模型。除其他外,组织由以下字符串组成:

string orgaName

现在是棘手的部分(对我来说)....在我的datagridview中,我不想拥有所有人员领域,我只想拥有以下内容:

foreName
surname
orga.orgaName

获取前两个字段很容易:

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();

如果每个人都有一个组织,这也可以正常工作,但事实并非如此。有些人没有组织,因此“组织”为空,并试图获取 Organisation.organName 以 nullpointerexeption 结尾。

现在的问题是:如何为 datagridview-datasource 编写我的选择语句,以便在 Organization 不为空时显示组织名称,否则将其他内容打印到 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 回答