在字符串中存储n x m矩阵

时间:2015-07-13 15:03:33

标签: c# string matrix

这是我的DataTable:

| 1 0 1 0 ...|
| 0 1 0 1 ...|
| 1 0 1 0 ...|
| . . . . ...|

我想以字符串形式将这些数据存储在数据库中,如下所示:

1010 0101 1010... or 1010;0101;1010... etc...

此外,我需要将其读回DataTable。

c#上有一个Matrix库,但它没有帮助我。我该怎么做? 提前谢谢!

1 个答案:

答案 0 :(得分:1)

假设您已经有一个包含textblob的数据库结构,那么您的DataTable类型只有0和1且没有空值的整数:

从DataTable中存储在名为dataTable

的数据库中
StringBuilder finalString = new StringBuilder();
for (int i = 0; i < dataTable.Rows.Count; i++)
{
    DataRow myRow = dataTable.Rows[i];
    foreach(object item in myRow.ItemArray)
    {
        if(item is int)
        {
            finalString.Append(item.ToString());
        }
        else
        {
            //Error
        }
    }
    finalString.Append(";");
}

//TODO Write here your query where you store the finalString.ToString() in the DB

从DB加载,假设您已经将DB中的字符串作为patternToLoad:

string[] rows = patternToLoad.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
DataTable newDT = new DataTable();
if(rows.Length > 0)
{
    int numOfColumns = rows[0].Length;
    //Since the matrix is not sparse all rows have the same length, so we just create the layout
    for(int i = 0; i < numOfColumns; i++)
    {
        newDT.Columns.Add(i.ToString(), typeof(int));
    }
    //Now go through all rows in string format and fill the actual DataTable
    foreach(string currentRow in rows)
    {
        DataRow newRow = newDT.NewRow();
        for(int j = 0; j < numOfColumns; j++)
        {
            newRow[j] = currentRow[j] = '1' ? 1 : 0;
        }
        newDT.Rows.Add(newRow);
    }
}

你可以让它变得更漂亮,但这可以让你大致了解该怎么做。我已经省略了许多应该进入生产代码以保持紧凑的chaeck。