Datatabel和 string之間的相互轉換

來源:互聯網
上載者:User

今天在做一個需求的時候,需要將datatable轉化string,下面是二者之間的一個可逆轉換

 Datatable 到 string

        public static string DataTableToString(DataTable dt)
        {
            //!@&,#$%,^&*為欄位的拼接字串
            //為了防止連接字串不在DataTable資料中存在,特意將拼接字串寫成特殊的字元!
            StringBuilder strData = new StringBuilder();
            StringWriter sw = new StringWriter();

             //DataTable 的當前資料結構以 XML 結構描述形式寫入指定的流
            dt.WriteXmlSchema(sw);
            strData.Append(sw.ToString());
            sw.Close();
            strData.Append("@&@");
            for (int i = 0; i < dt.Rows.Count;i++)             //遍曆dt的行
            {
                DataRow row = dt.Rows[i];
                if (i > 0)                                    //從第二行資料開始,加上行的連接字串
                {
                    strData.Append("#$%");
                }
                for (int j = 0; j < dt.Columns.Count; j++)    //遍曆row的列
                {
                    if (j > 0)                                //從第二個欄位開始,加上欄位的連接字串
                    {
                        strData.Append("^&*");
                    }
                    strData.Append(Convert.ToString(row[j])); //取資料
                }
            }

            return strData.ToString();
        }

 

string 到Datatable

        public static DataTable StringToDataTable(string strdata)
        {
            if (string.IsNullOrEmpty(strdata))
            {
                return null;
            }
            DataTable dt = new DataTable();
            string[] strSplit = {"@&@"};
            string[] strRow = {"#$%"}; //分解行的字串
            string[] strColumn = {"^&*"}; //分解欄位的字串

            string[] strArr = strdata.Split(strSplit, StringSplitOptions.None);
            StringReader sr = new StringReader(strArr[0]);
            dt.ReadXmlSchema(sr);
            sr.Close();

            string   strTable = strArr[1]; //取表的資料
            if (!string.IsNullOrEmpty(strTable))
            {
                string[] strRows = strTable.Split(strRow, StringSplitOptions.None); //解析成行的字串數組
                for (int rowIndex = 0; rowIndex < strRows.Length; rowIndex++) //行的字串數組遍曆
                {
                    string vsRow = strRows[rowIndex]; //取行的字串
                    string[] vsColumns = vsRow.Split(strColumn, StringSplitOptions.None); //解析成欄位數組
                    dt.Rows.Add(vsColumns);
                }
            }
            return dt;
        }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.