从多个数据集填充类对象

本文关键字:对象 填充 数据集 | 更新日期: 2023-09-27 18:37:22

我想用来自 OrganismDTAntibioticDT 的数据填充 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));