1

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

1 回答 1

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]);
            }
        }
    }
}
于 2013-10-23T16:51:31.050 回答