我有一个使用 IDataReader 填充对象的函数:
private void FillDataItem(IDataReader datareader)
{
this.CompanyCode = datareader.GetString(datareader.GetOrdinal("COMPANY"));
this.Name = datareader.GetString(datareader.GetOrdinal("NAME"));
//...and so on
}
这在使用 SqlDataReader 根据 SQL 查询的结果填充对象的字段时非常有用。几乎我所有的课程都有这种需要 IDataReader 的“FillDataItem”。使将数据库对象带入代码变得非常容易。
但是,现在我想做同样的事情,但使用来自 DataTable 的 DataRow 作为数据源。情况是出现了一个自定义构建的 DataTable,它的格式(相同的列)与来自 SQL 查询的格式完全相同,但它不是来自任何类似的外部数据源。我想循环遍历 DataTable 的行,并以与上述 FillDataItem() 方法相同的方式对每一行填充一个对象。
当然,我可以创建一个以 DataRow 作为参数的重载新方法:
private void FillDataItem(DataRow datarow)
{
this.CompanyCode = datarow["COMPANY"].ToString();
this.Name = datarow["NAME"].ToString();
//...and so on
}
但这与 IDataReader 版本非常相似,我真的很想知道如何通过一种方法实现我的目标,这样就不需要复制类似的代码。考虑到我有很多字段,FillDataItem 方法大概有 200 行。将其复制/粘贴到 DataRow 版本中似乎很浪费且难以维护。