我正在寻找一种循环DataSet来填充集合List的方法.DataSet中的数据可以位于DataSet中的多个DataTable中。我有一个对象,其中包含所需的列名列表。如果我将对象循环到数据集,它将无法工作。
public List<Customer> BuildCustomerListMultiFile(DataSet ds, Customer oCustomer)
{
List<Customer> lCustomers = new List<Customer>();
foreach (PropertyInfo p in typeof(Customer).GetProperties())
{
Customer oC = new Customer();
foreach(DataTable dt in ds.Tables)
{
foreach (DataRow dr in dt.Rows)
{
foreach (DataColumn dc in dt.Columns)
{
if (p.Name == dc.ColumnName)
{
p.SetValue(oC, dr[dc].ToString());
}
}
}
}
lCustomers.Add(oC);
}
return lCustomers;
}
我确实看过How to Convert DataTable to List using Reflections如果我正在使用DataTable,这将有效,但我不确定如何使用具有多个DataTable的DataSet。
答案 0 :(得分:1)
只需按数据集的数据表添加一个循环:
foreach(DataTable dt in ds.Tables)
{
foreach(DataRow dr in dt.Rows)
{
Customer oC = new Customer();
foreach(DataColumn dc in dt.Columns)
{
if(p.Name == dc.ColumnName)
{
p.SetValue(oC, dr[dc].ToString());
}
}
lCustomers.Add(oC);
}
}
另请注意:您正在创建并添加以列出循环外的oC
循环行。因此,无论数据表中的行数是多少,都只会将一个对象添加到列表中。
看起来这应该是在循环内循环迭代。