0

我有一个整数列表:

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

我有一个包含 integerIds 的数据表 .. 我试图通过迭代将它们放入此列表,但它给出错误:输入字符串格式不正确..

//GetDataTable是一个返回数据表的函数

我的代码:

        DataObj = new DAL();
        DataTable dt
    dt = DataObj.GetDataTable("GetAllowedLinksForUserRole",1);
    foreach (DataRow myRow in dt.Rows)
    {
        AllowedLinks.Add(Convert.ToInt32((myRow).ToString()));
    }

我不希望我的列表是数据行类型,因为我将需要整数以供以后操作!

4

2 回答 2

1

您应该索引您的 ID 在数据行中所在的列
在我对代码的修订中,我使用 var x 作为占位符。
您需要在数据表中设置包含整数值的列的索引。
更好的是,你也可以使用它的名字

DataObj = new DAL(); 
DataTable dt 
int x = 0; // <= here 0 is the index of the column with the IDs 
int name = "ID"; // <= here ID is the name of the column with the IDs
dt = DataObj.GetDataTable("GetAllowedLinksForUserRole",1); 
foreach (DataRow myRow in dt.Rows) 
{ 
    AllowedLinks.Add(Convert.ToInt32(myRow[x])); 
    // This is to use column name
    // AllowedLinks.Add(Convert.ToInt32(myRow[name])); 
} 

注意:上面的代码假定您的整数列不包含 NULL 值。
如果不是这种情况,则需要在将列值转换为整数之前进行测试

    AllowedLinks.Add(Convert.ToInt32(myRow[x] == DBNull.Value ? 0 : myRow[x])); 
于 2012-07-23T09:08:02.250 回答
1

签入快速表。必须有与行 myRow 关联的属性/索引。您不能像这样直接访问数据行Convert.ToInt32((myRow).ToString())

相反,您需要通过

Convert.ToInt32((myRow.propertyname).ToString())

或者Convert.ToInt32((myRow[incrementedindex]).ToString())

于 2012-07-23T09:49:01.750 回答