c# 多维数组、交错数组(转化为DataTable)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# 多维数组、交错数组(转化为DataTable),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3537字,纯文字阅读大概需要6分钟。
内容图文
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data; namespace ConsoleApplication31 { class Program { public static Array ReturnArray() { string[,,] arr = newstring[2, 3, 4]; for (int i = 0; i < 2; i++) { for (int j = 0; j < 3; j++) { for (int k = 0; k < 4; k++) { arr[i, j, k] = i + "," + j + "," + k; } } } return arr; } privatestatic Array GetJCSZ() { //string[][][] arr = new string[2][][]; //arr[0] = new string[2][]; //arr[0][0] = new string[3];//3 //arr[0][1] = new string[4];//4 //arr[0][0][0] = "0,0,0"; //arr[0][0][1] = "0,0,1"; //arr[0][0][2] = "0,0,2"; //arr[1] = new string[2][]; //arr[1][0] = new string[3]; //arr[1][1] = new string[4]; //arr[1][0][0] = "1,0,0"; //arr[1][0][1] = "1,0,1"; //arr[1][0][2] = "1,0,2"; //return arr;string[] arr = newstring[3]; arr[0] = "0"; arr[2] = "2"; return arr; } publicstaticvoid InitColumns(Array arr, ref Dictionary<string, DataColumn> dicCols, ref DataTable table) { for (int i = 0; i < arr.Length; i++) { if ((arr asdynamic)[i] is Array) { InitColumns((arr asdynamic)[i], ref dicCols, ref table); } else { if (arr.Length >= dicCols.Keys.Count) { dicCols.Clear(); for (int ii = 0; ii < arr.Length; ii++) { string colName = Guid.NewGuid().ToString(); DataColumn col = new DataColumn(colName); if (!dicCols.ContainsKey(colName)) { dicCols.Add(colName, col); } } } } } } publicstatic DataTable ArrayConvert2DataTable(Array arr) { DataTable tmpT = new DataTable(); Dictionary<string, DataColumn> dicCols = new Dictionary<string, DataColumn>(); Dictionary<string, DataRow> dicRows = new Dictionary<string, DataRow>(); //J=交 C=错bool isJC = !(arr.GetType().Name.Contains(‘,‘)); //交错数组处理if (isJC) { //交错数组第一个维度的元素个 DataTable table = new DataTable(); List<int> dims = new List<int>(); InitColumns(arr, ref dicCols, ref table); foreach (var item in dicCols) { table.Columns.Add(item.Value); } int currRowIndex = 0; SearchTable(ref currRowIndex,arr,arr, ref table); return table; } //多维数组处理else { int rank = arr.Rank; int cols = arr.GetLength(rank - 1); for (int i = 0; i < cols; i++) { DataColumn col = new DataColumn(Guid.NewGuid().ToString()); tmpT.Columns.Add(col); } Dictionary<int, int> dims = new Dictionary<int, int>(); int currRowIndex = -1; Dictionary<int, DataRow> dicRow = new Dictionary<int, DataRow>(); var iterator = arr.GetEnumerator(); int count = 0; while (iterator.MoveNext()) { var curr = iterator.Current; if (count % cols == 0) { currRowIndex++; DataRow dr = tmpT.NewRow(); tmpT.Rows.Add(dr); dicRow.Add(currRowIndex, dr); dr[0] = curr.ToString(); if (count == cols) { count = 0; } } else { tmpT.Rows[currRowIndex][count] = curr.ToString(); } count++; } } return tmpT; } privatestaticvoid SearchTable(refint currRowIndex, Array ori, Array curr, ref DataTable table) { for (int i = 0; i < curr.Length; i++) { bool isa = (curr asdynamic)[i] is Array; if (isa) { SearchTable(ref currRowIndex, ori, (curr asdynamic)[i], ref table); } else { if (table.Rows.Count < currRowIndex + 1) { DataRow newRow = table.NewRow(); table.Rows.Add(newRow); } try { table.Rows[currRowIndex][i] = (curr as Array).GetValue(i); } catch (Exception) { ; } if (i == curr.Length - 1) currRowIndex++; } } } staticvoid Main(string[] args) { var t1 = ArrayConvert2DataTable(ReturnArray()); var t2 = ArrayConvert2DataTable(GetJCSZ()); Console.ReadKey(); } } }
原文:http://www.cnblogs.com/kexb/p/5533279.html
内容总结
以上是互联网集市为您收集整理的c# 多维数组、交错数组(转化为DataTable)全部内容,希望文章能够帮你解决c# 多维数组、交错数组(转化为DataTable)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。