Таблица данных с двумя столбцами для перечисления <int>.NET 2.0 - PullRequest
0 голосов
/ 31 августа 2011

Я заполнил DataTable из хранимой процедуры в более старом веб-приложении, написанном на

C # в .NET 2.0 / Visual Studio 2005.

Я пытаюсь заполнить список значениями в DataTable, но продолжаю сталкиваться с парой проблем.

Мой процесс конвертирования выглядит так:

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 ]

3 голосов
/ 31 августа 2011

Похоже, вы пытаетесь получить значения столбцов для каждой строки. Вы только первый 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 голос
/ 31 августа 2011

вам нужно добавить фактические значения из строк, используя столбец в качестве индекса:

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);
   }
}
...