C# 将数据集中每行的列值存储到字符串[]

C# 将数据集中每行的列值存储到字符串[],c#,mysql,arrays,ado.net,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(); } for(int i=0;i

我有一个数据集,其中一个表有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();
}
for(int i=0;i
问题是id列的值已获取,但未存储在ids数组中。它只是抛出一个异常,比如对象引用,而不是将实例设置为对象的实例。 但当我使用调试模式检查代码时,我的“id”列值被提取,但并没有存储在ids数组中。 有人能帮忙吗?我错过了什么?
谢谢

您已经声明了数组引用,但没有实际创建的数组,您必须初始化它。您需要为数组指定等于或大于预期元素的大小

string[] ids = new string[100];
你最好使用这个列表,这是值得一读的关于两者区别的解释

List id=new List();
对于(int i=0;i
您声明了数组,但没有初始化它。您可以在下面的一个位置进行声明和初始化

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

您从未初始化阵列吗?
string[] ids = mydataset.Tables[0].Rows.Cast<DataRow>().Select(r=>r["id"].ToString()).ToArray();