【问题标题】:Add null values to a datagridview将空值添加到 datagridview
【发布时间】:2013-01-11 21:34:28
【问题描述】:

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

我的人物模型由以下字段组成(只是模型,而不是 datagridview):

string foreName
string surname
int devisionId
int someOtherId
Organisation orga

Organisation 是另一种与 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' 为空,并试图获取 Organisation.organName 以 nullpointerexeption 结尾。

现在的问题是: 如何为 datagridview-datasource 编写我的选择语句,以便在 Organization 不为空时显示组织名称,否则将其他内容打印到 datagridview(例如:没有可用的组织)

【问题讨论】:

    标签: c# nhibernate select datagridview ilist


    【解决方案1】:

    试试这个:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 如何实现以下内容:当组织!= null 设置组织名称并设置其他内容时
      • 您可以编写一个函数来执行此操作并从您的 lambda 中调用它。不过,这可能不是最好的方法,你想达到什么目的?
      • 一个人不仅可以属于一个组织,也可以属于一个部门,所以数据库中有组织和部门两个字段,但只能设置一个。设置组织时,该人只属于该组织,但是当设置了部门(组织为空)时,我还想在 datagridview 中填写部门(在数据库中,部门属于组织)
      • 所以我想要:listOfPersons.Select(x => new { if (x.Devision!= null) { OrganisationName = x.Devision.Organisation.Name && DevisionName = x.Devision.Name }) .ToList();
      • OrganisationName = x.Organisation == null ? "None" : x.Organisation.organName, DivisionName = x.Division == null ? "None" : x.Division.divisionName
      猜你喜欢
      • 2021-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-12
      • 1970-01-01
      • 1970-01-01
      • 2011-02-07
      • 1970-01-01
      相关资源
      最近更新 更多