-
.NET 1-Dimensional Array <-> Example Source of Transformation Between DataTableIT Story/C# & WPF 2022. 6. 19. 21:24반응형
public DataTable fun1ArrayToDataTable(string[] sArrData, int nColumnCount, params string[] sArrColumnHeader) { int nRowCount = 0; int nIndex = 0; try { //1차원배열이 Null이거나 데이터가 없으면 그냥 빠져나간다. if (sArrData == null || sArrData.Length <= 0) return null; //생성하려고 하는 DataTable의 Column길이가 없으면 그냥 빠져나간다. //if (nColumnCount <= 0) return null; //컬럼 개수와 컬럼헤더 개수가 같지 않으면 그냥 빠져나간다. if (nColumnCount != sArrColumnHeader.Length) return null; //1차원 배열 길이를 가지고 생성할 DataTable의 Row개수를 가져온다. if ((sArrData.Length % nColumnCount) == 0) { nRowCount = sArrData.Length / nColumnCount; } else { nRowCount = (sArrData.Length / nColumnCount) + 1; } DataTable dDT = new DataTable("NewTable"); //반환할 DataTable을 생성한다. DataColumn dDC; DataRow dDR; //컬럼을 생성해서 DataTable에 추가한다. for (int nColumnIndex = 0; nColumnIndex < nColumnCount; nColumnIndex++) { dDC = new DataColumn(); dDC.DataType = Type.GetType("System.String"); //Column은 String형식으로 한다. dDC.ColumnName = sArrColumnHeader[nColumnIndex].ToString(); //인자로 넘어온 ColumnHeader를 지정해준다. dDC.Caption = sArrColumnHeader[nColumnIndex].ToString(); dDT.Columns.Add(dDC); //생성된 컬럼을 DataTable에 추가한다. } //생성된 DataTable에 행 데이터를 추가한다. for (int nRowIndex = 0; nRowIndex < nRowCount; nRowIndex++) //행 데이터를 추가한다. { dDR = dDT.NewRow(); for (int nColumnIndex = 0; nColumnIndex < nColumnCount; nColumnIndex++) { if (nIndex < sArrData.Length) { dDR[nColumnIndex] = sArrData[nIndex]; //1차원 배열의 값을 DataRow에 추가한다. nIndex = nIndex + 1; //배열 Index를 증가시킨다. } } dDT.Rows.Add(dDR); //생성한 행 데이터를 DataTable에 추가한다. } return dDT; } catch { throw new Exception(); } } public string[] funDataTableTo1Array(DataTable dtDataTable) { int nColumnCount = 0; int nRowCount = 0; int nIndex = 0; string[] sArrData = null; try { //DataTable이 Null이거나 Data가 없으면 그냥 빠져나간다. //if (dtDataTable == null || dtDataTable.Rows.Count <= 0) return null; nColumnCount = dtDataTable.Columns.Count; //컬럼개수를 가져온다. nRowCount = dtDataTable.Rows.Count; //Row개수를 가져온다. //배열의 Size를 구한다. sArrData = new string[nColumnCount * nRowCount]; for (int nRowIndex = 0; nRowIndex < nRowCount; nRowIndex++) { for (int nColumnIndex = 0; nColumnIndex < nColumnCount; nColumnIndex++) { sArrData[nIndex] = dtDataTable.Rows[nRowIndex][nColumnIndex].ToString(); //1차원배열에 값을 저장한다. nIndex = nIndex + 1; } } return sArrData; } catch { throw new Exception(); } }
반응형'IT Story > C# & WPF' 카테고리의 다른 글
Barcode input processing and window status change processing (0) 2022.06.23 UserControl_MouseMove function example (0) 2022.06.23 Example of changing the CellStyle of Row in .NET DataGridView (0) 2022.06.19 Example of entering, deleting, and modifying new columns in .NET DataGridView (0) 2022.06.19 Example of adding, deleting, and modifying new rows in .NET DataGridView (0) 2022.06.19