2016-06-12 21 views
0

あまり前もって明確ではないので申し訳ありませんが、私が記述するのはちょっと難しいです。 今はデータ管理に関する問題が少しあります。私は、グラフィックデータ用のデータベースの中に文字列を持っています。今1次元配列を2つの配列に分割する

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

、私はデータを照会し、この「||」を用いて1次元配列に上に示した文字列を分割することができますセパレータ。現時点ではコードは次のとおりです。

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"列に入り、他の文字列は "values"列に入ります。

私は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

ループのために十分でしょう。最も効率的な方法は、ループを1回だけ繰り返してIDと値を分離することです。

 for (int i = 0; i < y.Length; i++) 
     { 
      string fieldid = y[i]; 
      string value = y[++i]; 
     } 
関連する問題