问题是这样的,我要从表里取出姓名字段,调用的方法是返回datable的,想把它转化为list<string>可是不知道怎么弄,项目运行时返回空了,代码如下:
     public static string[] getAllPersonsName(string keyWord,int displaycount) {
            DataTable keywords = new DataTable();
            List<string> resluts = new List<string>(displaycount);
            string sql = "select top 10 XM from tbPersons where XM like '"+keyWord+"%' order by AID desc";
            keywords = ExecuteBySQLString.GetTable(sql);
          if(keywords!=null){
              foreach (DataRow dr in keywords.Rows) {
                  resluts.Add(dr["XM"].ToString());
              }
          }
            return resluts.ToArray();
        }
请高手们指点指点,看看应该怎么转才好。

解决方案 »

  1.   

    前面加个判断
    如果链表为空就返回空字符串
    否则返回链表内容
    public static string[] getAllPersonsName(string keyWord,int displaycount) {
                DataTable keywords = new DataTable();
                List<string> resluts = new List<string>(displaycount);
                string sql = "select top 10 XM from tbPersons where XM like '"+keyWord+"%' order by AID desc";
                keywords = ExecuteBySQLString.GetTable(sql);
              if(keywords!=null){
                  foreach (DataRow dr in keywords.Rows) {
                      resluts.Add(dr["XM"].ToString());
                  }
              }
              if(resluts.Count!=0)
                return resluts.ToArray();
              else
                return String.Empty;
            }
      

  2.   

    明确select top 10 XM from tbPersons where XM like '"+keyWord+"%' order by AID desc是否有值返回.
      

  3.   

    有,在数据库中执行了代码,可以返回一个列,就是姓名,只是当我在c#后台中取出来时是放在table中的,不知道怎么把它转到list<string>中。
      

  4.   

    说明你执行那个sql后返回的就是0行
      

  5.   

    检查下ExecuteBySQLString.GetTable方法