2016-06-12 3 views
0

미리 명확히 밝히지 않아서 미안합니다. 설명하기가 다소 어렵습니다. 지금 데이터 관리와 관련하여 약간의 문제가 있습니다. 그래픽 데이터를위한 데이터베이스 내부에 문자열이 있습니다.1 차원 어레이를 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]; 
     } 
관련 문제