2016-06-12 94 views
0

对不起,事先不太清楚,我很难形容。 现在我遇到了一些数据管理问题。我在图形数据的数据库里有东西字符串。将单维阵列拆分为2个阵列

f0||Title Text||f1||Subtitle Text||f2||Option 1||f3||Option 2 

现在,我可以通过使用这个“||”来查询数据并将上面显示的字符串拆分为一维数组,分隔器。截至目前,代码如下。

MySQLHandler handler = new MySQLHandler(this.text_DataIP.Text.ToString()); 
     List<string>[] data = handler.SelectCG("graphics", text_CGBuffer.Text.ToString()); 
     string x = data[2][0].ToString(); 
     string[] y = x.Split(new string[] { "||" }, StringSplitOptions.None); 
     // For each string in the new string array, lets separate them into their own strings for adding to the DataSet 
     for (int n = 0; n < y.Length;) 

     DataSet dataset = new DataSet(); 
     DataTable table = dataset.Tables.Add(); 
     table.Columns.Add("fieldid"); 
     table.Columns.Add("values"); 

缺少的是对于数组中其他每个字符串的代码,它将交替添加数据到DataTable。例如,“f0,f1,f2,f3”将进入“fieldid”列,其他字符串将进入值列。

我正在考虑做一个for循环,但我不知道这是否是最有效的方法。什么会更有效率,我将如何实现这一目标?

+0

该字符串的列与值的比率是1比1吗?或者会有更多的专栏和价值? – jwatts1980

+0

它总是以1比1的比例。我不在数据库表中放置多个列的原因是因为在后面的软件迭代中数据格式可能会发生变化,所以我将来会证明这一点。 –

回答

1

这是我测试过的一个例子。我认为它适用于你:

string x = "f0||Title Text||f1||Subtitle Text||f2||Option 1||f3||Option 2"; 
string[] y = x.Split(new string[] { "||" }, StringSplitOptions.None); 

DataSet ds = new DataSet(); 
DataTable dt = ds.Tables.Add(); 
List<object> rowvalues = new List<object>(); //to hold the row values 

//Loop through 2 at a time, 
for (int n = 0; n < y.Length; n = n + 2) 
{ 
    dt.Columns.Add(y[n]); //add the column 
    rowvalues.Add(y[n + 1]); //and save the value 
} 

//Create the row 
var dr = dt.NewRow(); 
//Set the row values 
dr.ItemArray = rowvalues.ToArray(); 
+0

嘿。需要做出什么改变才能使其仅使用2列? “f0,f1,f2”需要在1列中,但与其旁边的数据属于同一行。据我所知,它每次都会创建一个新列。 –

+0

@TaylorBroad我不明白... – jwatts1980

0

for循环就足够了。最有效的方法是只循环一次循环来分隔id和值。

 for (int i = 0; i < y.Length; i++) 
     { 
      string fieldid = y[i]; 
      string value = y[++i]; 
     }