这是我的DataTable:
| 1 0 1 0 ...|
| 0 1 0 1 ...|
| 1 0 1 0 ...|
| . . . . ...|
我想以字符串形式将这些数据存储在数据库中,如下所示:
1010 0101 1010... or 1010;0101;1010... etc...
此外,我需要将其读回DataTable。
c#上有一个Matrix库,但它没有帮助我。我该怎么做? 提前谢谢!
答案 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。