我已经在用
编写的旧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()方法。
答案 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);
}
}