从多个数据集填充类对象
本文关键字:对象 填充 数据集 | 更新日期: 2023-09-27 18:37:22
我想用来自 OrganismDT 和 AntibioticDT 的数据填充 Organism 类对象。 以下是我正在尝试的数据表结构,类结构和填充技术。 基于OrganismAliasId,我必须填写抗生素DT[抗生素对象列表]行并分配给相应的生物体对象。任何人都可以帮助我实现这一目标..
数据表
DataTable OrganismDT = new DataTable("Organism");
OrganismDT.Columns.Add("OrganismAliasId");
OrganismDT.Columns.Add("Name");
DataTable AntibioticsDT = new DataTable("Antibiotics");
AntibioticsDT.Columns.Add("OrganismAliasId");
AntibioticsDT.Columns.Add("Name");
AntibioticsDT.Columns.Add("Susceptibility");
类结构:
public class Organism
{
public int AliasId { get; set; }
public string Name { get; set; }
public List<Antibiotic> Antibiotics;
}
public class Antibiotic
{
public string Name { get; set; }
public string Susceptibility { get; set; }
}
将数据表填充到类对象
List<Organism> Organisms = Organism.AsEnumerable().Select(row =>
new Organism
{
AliasId = row.Field<int>("OrganismAliasId"),
Name = row.Field<string>("Name"),
Antibiotics = new List<Antibiotic>()
}).ToList();
这应该有效:-
List<Organism> Organisms = OrganismDT.AsEnumerable().Select(row =>
new Organism
{
AliasId = row.Field<int>("OrganismAliasId"),
Name = row.Field<string>("Name"),
Antibiotics = AntibioticsDT.AsEnumerable()
.Where(x => x.Field<int>("OrganismAliasId")
== row.Field<int>("OrganismAliasId"))
.Select(x => new Antibiotic
{
Name = x.Field<string>("Name"),
Susceptibility = x.Field<string>("Susceptibility")
}).ToList()
}).ToList();
另外,请注意,您应该通过指定其数据类型来创建列,否则可能会引发运行时异常:-
AntibioticsDT.Columns.Add("OrganismAliasId",typeof(int));