我有一个数据表,我正在应用 Select()方法。之后我想把结果变成一个String数组。我尝试了以下代码,但它无法正常工作。 请让我知道确切的解决方案。
DataTable dtget = HttpContext.Current.Cache["Hello"] as DataTable;
string sqlFilter = "Securityid = '" + CommonClass.Encryptdata(txtSecurity.Text) + "'";
DataRow[] dr = dtget.Select(sqlFilter);
if (dr.Length > 0)
{
String[] Con;
for (int i = 0; i <= dr.Length; i++)
{
dr[i] = dr[i].ToString();
}
}
答案 0 :(得分:0)
您必须创建List<T>
。
这样的事情:
List<String[]> list=new List<String[]>();
if (dr.Length > 0)
{
for (int i = 0; i < dr.Length; i++)
{
string []ar=new string[dtget.Columns.Count];
for(int j=0;j<dtget.Columns.Count;j++)
{
ar[j]=dr[i][j].ToString();
}
list.Add(ar);
}
}
答案 1 :(得分:0)
你已经声明了数组,但没有实例化它。并且你也没有在实际数组中写任何东西,你试图直接写回数据表。
String[] Con= new String[dtget.Columns.Count];
for (int i = 0; i <= dr.Length; i++)
{
Con[i] = dr[i].ToString();
}
答案 2 :(得分:0)
问题是您要为数据行分配值而不是字符串数组。 变化
dr[i] = dr[i].ToString();
到
con[i] = dr[i].ToString();
你也错过了Con的新陈述:
Con = new String[dr.Table.Columns.Count];
注意没有dr.Length这样的东西,你必须检查列数:
dr.Table.Columns.Count
最后,您应该将字符串数组定义向上移动,以便它可以在IF之外使用。
答案 3 :(得分:0)
根据您的需要,您可以使用Datarow的ItemArray属性。它是一个对象数组而不是字符串数组,但在使用它的值之前,你可以做一个“ToString()”并且你已经完成了设置。
string a = dr.ItemArray[i].ToString();