0

我有一个数据表,我在其上应用Select()方法。之后,我想将结果放入一个字符串数组中。我已经尝试了以下代码,但它不起作用。请让我知道确切的解决方案。

 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();

        }
    }
4

4 回答 4

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);
        }
    }
于 2012-07-03T10:38:53.987 回答
0

您已经声明了数组,但没有实例化它。而且您也没有向实际数组写入任何内容,而是试图直接写回数据表。

String[] Con= new String[dtget.Columns.Count]; 
for (int i = 0; i <= dr.Length; i++) 
{ 
    Con[i] = dr[i].ToString(); 
} 
于 2012-07-03T10:43:41.340 回答
0

问题是您将值分配给 datarrow 而不是您的字符串数组。改变

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 之外可用。

于 2012-07-03T10:43:58.440 回答
0

根据您的需要,您可以使用 Datarow 的 ItemArray 属性。它是一个对象数组而不是字符串数组,但在使用它的值之前,您可以执行“ToString()”,一切就绪。

string a = dr.ItemArray[i].ToString();
于 2012-07-03T10:50:40.700 回答