将数据集中每行的列值存储到string []中

时间:2013-10-05 07:21:15

标签: c# mysql arrays ado.net

我有一个数据集,其中一个表有39行。现在我想将我的id列值的值存储在一个单独的数组中,如string[] ids。 我已经像这样定义了我的数组:

string[] ids = null;

我用这一行来存储这个数组中的值:

for ( int i = 0; i < mydataset.Tables[0].Rows.Count; i++)
{
ids[i] = mydataset.Tables[0].Rows[i]["id"].ToString();
}

问题是获取了id列值但未存储在ids数组中。它只是抛出一个异常,比如Object引用没有将实例设置为对象的实例。 但是当我使用调试模式检查我的代码时,我的“id”列值被提取但不存储在ids数组中。 有人可以帮忙吗?我错过了什么? 谢谢...

2 个答案:

答案 0 :(得分:0)

您已声明数组引用但实际上未创建数组,您必须初始化它。您需要将数组大小等于或大于预期元素。

string[] ids = new string[100];

你最好使用List,它值得一读有关两个解释here之间的区别。

List<string> ids = new List<string>();

for ( int i = 0; i < mydataset.Tables[0].Rows.Count; i++)
{
    ids.Add(mydataset.Tables[0].Rows[i]["id"].ToString());
}

答案 1 :(得分:0)

你声明了数组但没有初始化它。您可以同时进行声明和初始化,如下所示;

string[] ids = mydataset.Tables[0].Rows.Cast<DataRow>().Select(r=>r["id"].ToString()).ToArray();