C#中创建DataTable后无法打印输出的技术求助
问题分析与解决
你的问题出在两个核心点:
DataTable列定义与行数据不匹配
你只给DataTable添加了3列(空名称列、Sun、Moon),但调用Rows.Add时每行传入了12个值(1个字符串+10个数值)。虽然C#不会报错,DataTable会自动补全缺失的列,但这会导致数据结构混乱,也偏离了你原本的设计意图。缺少实际输出逻辑
你仅创建了DataTable和DataView,但没有编写任何打印、绑定或导出的代码,程序自然不会输出内容。
修正方案
1. 对齐列与行数据
如果想让LgeoEPH/BgeoEPH的每个元素对应一列,先把列定义完整:
DataTable dtz = new DataTable(); // 第一列作为标识列 dtz.Columns.Add("Type", typeof(string)); // 为每个索引创建对应列(0到10) for (int i = 0; i <= 10; i++) { dtz.Columns.Add($"Index_{i}", typeof(double)); } // 此时每行元素数量与列数完全匹配 dtz.Rows.Add("LgeoEPH", LgeoEPH[0], LgeoEPH[1], LgeoEPH[2], LgeoEPH[3], LgeoEPH[4], LgeoEPH[5], LgeoEPH[6], LgeoEPH[7], LgeoEPH[8], LgeoEPH[9], LgeoEPH[10]); dtz.Rows.Add("BgeoEPH", BgeoEPH[0], BgeoEPH[1], BgeoEPH[2], BgeoEPH[3], BgeoEPH[4], BgeoEPH[5], BgeoEPH[6], BgeoEPH[7], BgeoEPH[8], BgeoEPH[9], BgeoEPH[10]);
2. 添加输出代码
根据你的ASP.NET环境,可选择以下方式输出:
方式1:绑定到GridView控件(页面可视化展示)
先在.aspx页面添加GridView控件:
<asp:GridView ID="GridView1" runat="server"></asp:GridView>
后台代码绑定数据:
GridView1.DataSource = dtz; GridView1.DataBind();
方式2:生成文本输出(输出到页面或日志)
StringBuilder sb = new StringBuilder(); // 先输出列名 foreach (DataColumn col in dtz.Columns) { sb.Append(col.ColumnName + "\t"); } sb.AppendLine(); // 遍历每行输出数据 foreach (DataRow row in dtz.Rows) { foreach (var item in row.ItemArray) { sb.Append(item.ToString() + "\t"); } sb.AppendLine(); } // 输出到页面(Web环境) Response.Write("<pre>" + sb.ToString() + "</pre>"); // 或写入日志文件 File.WriteAllText(Server.MapPath("~/datatable_output.txt"), sb.ToString());
内容的提问来源于stack exchange,提问作者er_jack
相关产品推荐
相关产品推荐

