解决方案 »

  1.   

    就是遍历,自己组装,先遍历行,然后遍历该行的cell
      

  2.   

    这个,循环输出不就OK了
    for(int i=0;i<dt.rows.count;i++)
    {
    write2txt("名字="+dt.rows[i]["姓名"].tostring());
    write2txt("年龄="+dt.rows[i]["年龄"].tostring());
    write2txt("考点::"+dt.rows[i]["考点"].tostring()+"语文"+dt.rows[i]['语文'].tostring());
    }
      

  3.   

    使用2重for循环搞定,不用定义什么学科数组
    List<string> L=new List<string>();
    for(int r=0;r<dt.rows.count;r++)
    {
    if(!L.contains(dt.rows[i][1].Tostring()+dt.rows[i][2].Tostring())
    {
    L.Add(dt.rows[i][1].Tostring()+dt.rows[i][2].Tostring())str+=dt.columns[1].columnName+"="+dt.rows[i][1]+"\n";
    str+=dt.columns[2].columnName+dt.rows[i][2]+"\n";
    }
    for(int l=4;l<dt.columns.count;l++)
    {
    str+=dt.rows[i][3]+"::"+dt.columns[l].columnName+"="+dt.rows[i][l]+"\n";
    }
    }
      

  4.   

    哦,忘了NULL的不加,加层判断看值是否NULL就行了.
      

  5.   


    这是我自己写的,还没去掉重复的,感觉自己写的很不好,希望帮忙改下,或者给出更好的。
    /// <summary>
            /// DataTable格式化成目标字符串
            /// </summary>
            /// <param name="dt">SQL查询到的数据</param>
            /// <returns></returns>
            private string DataTableToString(DataTable dt, string[] ObjectList)
            {
                StringBuilder sb = new StringBuilder();            if (dt.Rows.Count > 0)
                {
                    string prefix = String.Empty;
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        for (int j = 0; j < dt.Columns.Count; j++)
                        {
                            string temp_value = dt.Rows[i][j].ToString();
                            string col_name = dt.Columns[j].ColumnName;
                            if (col_name == "考点")
                            {
                                prefix = temp_value;
                            }
                            if(temp_value != String.Empty)
                            {
                                if(IsContain(col_name, ObjectList))
                                {
                                    sb.Append(prefix);
                                    sb.Append("::");
                                    sb.Append(col_name);
                                    sb.Append("=");
                                    sb.Append(temp_value);
                                    sb.Append("\n");
                                }
                                else
                                {
                                    sb.Append(col_name);
                                    sb.Append("=");
                                    sb.Append(temp_value);
                                    sb.Append("\n");
                                }
                            }
                        }
                    }
                }
                return sb.ToString();
            }        /// <summary>
            /// 判断字符串是否在数组中
            /// </summary>
            /// <param name="item">字符串</param>
            /// <param name="MesKeyList">字符串列表</param>
            /// <returns>存在返回True</returns>
            private bool IsContain(string item, string[] TestList)
            {
                foreach (string key in TestList)
                {
                    if (key == item)
                    {
                        return true;
                    }
                }
                return false;
            }
      

  6.   

    contains是LIST自带的方法,不需要自己做函数遍历比较.