1

我有一个使用 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 版本中似乎很浪费且难以维护。

4

1 回答 1

3

数据表上有一个 CreateDataReader 方法。您可以使用它将数据读取器传递给您现有的代码。

http://msdn.microsoft.com/en-us/library/system.data.datatable.createdatareader.aspx

于 2012-10-31T08:46:39.053 回答