使用列表连接 c# wpf 的数据网格中的信息不一致



我在注册表类中有一个名为注册表的表。 它包含

  • 编号、描述People_id

People_id 是 People 类中 People 表中的外键。 它包含

  • id、姓名、birth_date

我需要在 DataGrid 中显示注册表表中的所有数据,并在注册表表中显示People_id的年龄(使用 birth_date 计算(。我已经可以检索所有注册表数据并将其显示在数据网格上,但我缺少年龄部分。

我尝试过这样的东西。检索注册表数据,获取出生日期,进行计算并仅使用年龄结果填充列表。然后,将两个 List 与 Concat 方法联接到一个名为 CombRegistryAge 的新列表中,如下面的第一种方法所示。

public List<object> RegistryJoinAge()
{          
List<object> ResultAge = new List<object>();
List<Registry> ListRegistry = new Registry().LoadRegistry();
//method LoadRegistry retrieve all items in Registry table
foreach (var item in ListRegistry)
{
var age = AgeCalculation(item.People.birth_date);
ResultAge.Add(age);
}
List<object> CombRegistryAge = ListRegistry.Cast<object>().Concat(ResultAge).ToList();
return CombRegistryAge;
}

对于年龄计算方法,开始测试很简单

private int AgeCalculation(DateTime birthdate)
{
var todayIs = DateTime.Today;
int age = todayIs.Year - birthdate.Year;
return age;
}

但是当我在数据网格中使用列表梳理注册表调用该方法时

datagrid_fillData.ItemsSource = RegistryJoinAge();

我仍然在里面获取注册表数据,但没有年龄,我注意到,从数据网格中,它为计算的每个年龄添加了空行,但实际上,我需要将它们显示为单个行,就像在数据网格中这样。

  • ID, 描述, People_id, 年龄
  • 101, 通过, 1802, 35

这是我的疑问。也许这是列表的问题,因为我尝试在 concat 方法中反转列表顺序,但它显示并空网格。 任何帮助,不胜感激。

我建议您创建一个类UserRegistryModel,以携带可以在datagrid中绑定数据的数据。

public class UserRegistryModel
{
public int Number { get; set; }
public string Description { get; set; }
public int People_id { get; set; }
public int Age { get; set; }
}

使用Lambdaselect使代码更清晰。

public List<UserRegistryModel> RegistryJoinAge()
{
List<UserRegistryModel> ListRegistry = new Registry().LoadRegistry()
.select(x => new UserRegistryModel()
{
Number = x.Number,
Description = x.Description,
People_id = x.People_id,
Age = AgeCalculation(x.People.birth_date)
}).ToList();
return ListRegistry;
}

最终回报UserRegistryModel列表

最新更新