今天在做一个需求的时候需要将datatable转化string下面是二者之间的一个可逆转换 Datatable 到 string public static string DataTableToString(DataTable dt) { //!@&#$%^&*为字段的拼接字符串 //为了防止连接字符串不在DataTable数据中存在特意将拼接字符串写成特殊的字符! StringBuilder strData = new StringBuilder(); StringWriter sw = new StringWriter(); //DataTable 的当前数据结构以 XML 架构形式写入指定的流 dtWriteXmlSchema(sw); strDataAppend(swToString()); swClose(); strDataAppend(@&@); for (int i = ; i < dtRowsCount;i++) //遍历dt的行 { DataRow row = dtRows[i]; if (i > ) //从第二行数据开始加上行的连接字符串 { strDataAppend(#$%); } for (int j = ; j < dtColumnsCount; j++) //遍历row的列 { if (j > ) //从第二个字段开始加上字段的连接字符串 { strDataAppend(^&*); } strDataAppend(ConvertToString(row[j])); //取数据 } } return strDataToString(); } string 到Datatable public static DataTable StringToDataTable(string strdata) { if (stringIsNullOrEmpty(strdata)) { return null; } DataTable dt = new DataTable(); string[] strSplit = {@&@}; string[] strRow = {#$%}; //分解行的字符串 string[] strColumn = {^&*}; //分解字段的字符串 string[] strArr = strdataSplit(strSplit StringSplitOptionsNone); StringReader sr = new StringReader(strArr[]); dtReadXmlSchema(sr); srClose(); string strTable = strArr[]; //取表的数据 if (!stringIsNullOrEmpty(strTable)) { string[] strRows = strTableSplit(strRow StringSplitOptionsNone); //解析成行的字符串数组 for (int rowIndex = ; rowIndex < strRowsLength; rowIndex++) //行的字符串数组遍历 { string vsRow = strRows[rowIndex]; //取行的字符串 string[] vsColumns = vsRowSplit(strColumn StringSplitOptionsNone); //解析成字段数组 dtRowsAdd(vsColumns); } } return dt; } |