列列表<int> .NET 2.0 </int>的2列DataTable

时间:2011-08-30 22:13:44

标签: c# datatable .net-2.0

我已经在用

编写的旧Web应用程序中的存储过程中填充了DataTable

.NET 2.0 / Visual Studio 2005下的C#。

我正在尝试使用DataTable中的值填充List,但是我一直在遇到几个问题。

我的转化过程如下:

List<int> SpecialVendorList = new List<int>();

foreach (DataRow datarow in GetAllSpecialVendors().Rows)
{
//Loop through each row
foreach (DataColumn column in GetAllSpecialVendors().Columns)
   {
       SpecialVendorList.Add(column["ChildVendorId"]);
       SpecialVendorList.Add(column["ParentVendorId"]);
   }
}

这给了我以下错误:

Can not apply indexing with [] to an expression of type 'System.Data.DataColumn'

用于每个SpecialVendorList.Add()方法。

2 个答案:

答案 0 :(得分:3)

好像你正试图获取每一行的列值。您只有第一个foreach循环:

List<int> SpecialVendorList = new List<int>();

try
{
    foreach (DataRow datarow in GetAllSpecialVendors().Rows)
    {
        //Loop through each row
       SpecialVendorList.Add(Convert.ToInt32(datarow["ChildVendorId"]));
       SpecialVendorList.Add(Convert.ToInt32(datarow["ParentVendorId"]));
    }
}
catch(FormatException fe)
{
    //handle the error
}

此处的字符串索引将获取该特定行中该列的值

答案 1 :(得分:1)

您需要使用列作为索引来添加行中的实际值:

List<int> SpecialVendorList = new List<int>();

foreach (DataRow datarow in GetAllSpecialVendors().Rows)
{
   //Loop through each row
   foreach (DataColumn column in GetAllSpecialVendors().Columns)
   {
      int val;
      if (int.TryParse(datarow[column].ToString(), out val))
         SpecialVendorList.Add(val);
   }
}