如何使列名成为第一行

本文关键字:一行 何使列 | 更新日期: 2023-09-27 18:36:31

我有一个使用动态透视的查询,因此列名会根据数据而变化。我的代码根据查询结果生成一个.csv文件。我不知道如何制作标题,因为我无法对列名进行硬编码。是否可以以某种方式使查询结果的标头成为记录集的第一行?

谢谢。

补充:刚刚意识到,如果我不知道我有哪些列,我什至不知道如何在我的 C# 代码中获取数据......所以我不能做这样的事情:

   result.AddRange(from DataRow dr in dt.Rows
                            select new DailyTransactionSheet
                                {
                                    Serve = Convert.ToInt32(dr["Serve"]),
                                    Remits = Convert.ToInt32(dr["Remits"]),
                                    List = Convert.ToInt32(dr["List"]),
                                    Billing = Convert.ToInt32(dr["Billing"]),
                                    DollarSent = Convert.ToInt32(dr["DollarSent"]),
                                    FileAck = Convert.ToInt32(dr["FileAck"]),
                                });
        }

如何使列名成为第一行

根据

注释:

基本上,您需要执行查询并从中获取有关列的信息,具体取决于您的执行方式,可以有以下几种选择:

SQLDataReader获取结果,您可以从 GetSchemaTable GetSchemaTable.Columns获取列信息

SqlDataAdapter.Fill(DataSet) DataSet.Tables[0].Columns - 您应该阅读有关 DataSet.Tables 的这些方法和属性

下面是来自 MSDN 的示例:

private void PrintRows(DataSet dataSet)
{
    // For each table in the DataSet, print the row values. 
    foreach(DataTable table in dataSet.Tables)
    {
        foreach(DataRow row in table.Rows)
        {
            foreach (DataColumn column in table.Columns)
            {
                Console.WriteLine(row[column]);
            }
        }
    }
}