ArrayList列到DataTable列

时间:2018-05-23 12:13:48

标签: c# arraylist datatable

我有ArrayList,其中包含多列:

enter image description here

如何将每个值插入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);

        }

1 个答案:

答案 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在评论中所说的那样。