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