user2178738
user2178738

Reputation:

How to Convert String Data to Data Table in C# asp.net?

So far I have tried to convert DataTable to String as follow:-

public static string convertDataTableToString(DataTable dataTable)
    {
        string data = string.Empty;
        int rowsCount = dataTable.Rows.Count;
        for (int i = 0; i < rowsCount; i++)
        {
            DataRow row = dataTable.Rows[i];
            int columnsCount = dataTable.Columns.Count;
            for (int j = 0; j < columnsCount; j++)
            {
                data += dataTable.Columns[j].ColumnName + "~" + row[j];
                if (j == columnsCount - 1)
                {
                    if (i != (rowsCount - 1))
                        data += "$";
                }
                else
                    data += "|";
            }
        }
        return data;
    }

Now I want to convert returned string into DataTable again.

Upvotes: 0

Views: 37781

Answers (1)

grovesNL
grovesNL

Reputation: 6075

You can use String.Split to break your string into rows and cells. If the column setup is always the same (as it should be), then you can simply add the columns on your first iteration through the cells.

Here's a simple example:

public static DataTable convertStringToDataTable(string data)
{
    DataTable dataTable = new DataTable();
    bool columnsAdded = false;
    foreach(string row in data.Split('$'))
    {
        DataRow dataRow = dataTable.NewRow();
        foreach(string cell in row.Split('|'))
        {
            string[] keyValue = cell.Split('~');
            if (!columnsAdded)
            {
                DataColumn dataColumn = new DataColumn(keyValue[0]);
                dataTable.Columns.Add(dataColumn);
            }
            dataRow[keyValue[0]] = keyValue[1];
        }
        columnsAdded = true;
        dataTable.Rows.Add(dataRow);
    }
    return dataTable;
}

Alternatively you could get a list of all columns prior to the loop, but this way is likely easier for your purpose.

Upvotes: 3

Related Questions