我有ArrayList
,其中包含多列:
如何将每个值插入DataTable
?
我的DataTable看起来像这样:
ArrayList crmUpdate = new ArrayList();
DataTable insertDt = new DataTable();
insertDt.Columns.Add("Company", typeof(string));
insertDt.Columns.Add("Contractid", typeof(string));
insertDt.Columns.Add("ContractNumber", typeof(string));
insertDt.Columns.Add("InstAgreeNum", typeof(string));
insertDt.Columns.Add("ProductNumber", typeof(string));
insertDt.Columns.Add("StartDate", typeof(DateTime));
insertDt.Columns.Add("UpdatePrice", typeof(decimal));
我尝试过这样的事情:
foreach (object item in crmUpdate)
{
DataRow row = insertDt.NewRow();
row["Company"] = item;
insertDt.Rows.Add(row);
}
但我无法获得item.Company。我需要知道如何从Item.Company
引用ArrayList
。希望有人可以进一步指导我。
谢谢!
更新
根据所有反馈 - 我可以这样做吗?
// Calculate prices
List<CrmPartPrice> crmUpdate = new List<CrmPartPrice>();
foreach (CrmPartPrice item in crmUpdate)
{
DataRow row = insertDt.NewRow();
row["Company"] = item.Company;
row["Contractid"] = item.ContractId;
insertDt.Rows.Add(row);
}
答案 0 :(得分:1)
假设您出于某种原因无法将ArrayList
更改为List<T>
,则需要将ArrayList
中的项目投射到其实际类型,因为{{ 1}}将所有内容存储为ArrayList
:
object
但是,您应该将foreach (object item in crmUpdate)
{
// the item reference is of type `object`, cast it to CrmPartPrice
var partPrice = (CrmPartPrice)item;
var row = insertDt.NewRow();
row["Company"] = partPrice.Company;
row["Contractid"] = partPrice.Contractid;
// more of the same...
insertDt.Rows.Add(row);
}
更改为正确的ArrayList
,并且因为它们共享了很多方法,所以可能只需要将声明从List
更改为ArrayList crmUpdate = new ArrayList();
,正如Tim Schmetler在评论中所说的那样。