如何使列名成为第一行?

时间:2013-10-22 19:24:04

标签: c# sql-server

我有一个使用动态数据透视的查询,因此列名会根据数据而变化。我的代码根据查询结果生成.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"]),
                                });
        }

1 个答案:

答案 0 :(得分:0)

根据评论:

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

SQLDataReader要获取结果,您可以从GetSchemaTable.Columns GetSchemaTable

获取列信息

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]);
            }
        }
    }
}