如何为数组赋值

时间:2009-09-23 08:04:46

标签: asp.net

如何将数据库值分配给数组。我试过这样......

 da = new SqlDataAdapter("select emname from emp", con);
        ds = new DataSet();
        da.Fill(ds, "emp");
        if(ds.Tables [0].Rows.Count >0)
        {
            for(int i=0;i<ds.Tables [0].Rows .Count ;i++)
            {
                string[] myArray = ds.Tables[0].Rows[i]["emname"].ToString();
            }
        }

但它给出了无法将字符串转换为字符串[]的错误 请帮帮我

3 个答案:

答案 0 :(得分:5)

试试这个:

da = new SqlDataAdapter("select emname from emp", con);
ds = new DataSet();
da.Fill(ds, "emp");
if(ds.Tables[0].Rows.Count > 0)
{
   string[] myArray = new string[ds.Tables[0].Rows.Count];
   for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
   {
       myArray[i] = ds.Tables[0].Rows[i]["emname"].ToString();
   }
   // Use myArray here...
}

请注意,使用LINQ有更简洁的方法,但如果您对C#/ .NET不熟悉,我建议您在深入了解LINQ之前熟悉基础知识。

答案 1 :(得分:0)

您正在尝试在每个循环中对新数组进行初始化,并且最重要的是您还尝试将其指定为字符串而不是数组。

string [] [] myArray = ds.Tables [0] .Rows是正确的解决方案。另请注意,行是一个多维数组。如果你想要一个填充了特定行的数组,你也可以使用例如string [] myArray = dt.Tables [0] .Rows [0]。

答案 2 :(得分:0)

如果你想要一个包含所有名字的数组,你可以将DataRow数组转换为string数组,如下所示:

da = new SqlDataAdapter("select emname from emp", con);
ds = new DataSet();
da.Fill(ds, "emp");
string[] myArray = Array.ConvertAll<DataRow, string>(ds.Tables[0].Select(), 
                         delegate(DataRow row) { return row["emname"].ToString(); });