我有一个小的 C# 函数,它接受任何通用 SQLDataReader 并将其转换为 csv 文件。但是,我现在需要忽略传递给它的数据读取器中的 1 列。
如何从 SQLDataReader 中删除 1 列?
查询中需要此列,主要用于排序,但在同一页面加载的另一个区域中使用,但我不希望它显示在我将生成的 csv 文件中。
编辑:我认为我有点误导,我希望删除的列在其他情况下使用,而不是这个,所以只需从查询中删除即可,但会导致我必须运行两次查询,而不是只有一次,它是一个更大的查询。
我有一个小的 C# 函数,它接受任何通用 SQLDataReader 并将其转换为 csv 文件。但是,我现在需要忽略传递给它的数据读取器中的 1 列。
如何从 SQLDataReader 中删除 1 列?
查询中需要此列,主要用于排序,但在同一页面加载的另一个区域中使用,但我不希望它显示在我将生成的 csv 文件中。
编辑:我认为我有点误导,我希望删除的列在其他情况下使用,而不是这个,所以只需从查询中删除即可,但会导致我必须运行两次查询,而不是只有一次,它是一个更大的查询。
传递要隐藏的整数数组。整数对应于您要关闭的列的索引。您可以创建一个重载方法,这样您就不必更改程序中调用它并打印每一列的代码。
(我在这里假设很多,但重载是关键)
public void MakeMyCSV(string MyFileName, SQLDataReader DataToOutput)
{
MakeMyCSV(MyFileName, DataToOutput, null);
}
public void MakeMyCSV(string MyFileName, SQLDataReader DataToOutput, int[] ExcludedColumns) //if this is your current method signature...
{
//iterate through each record
// iterate through each column
// if ExcludedColumns is not null then see if this column is in it
// if it is not in it, output it
}
您不需要在结果集中包含在 SQL 查询的 order by 子句中使用的列。你能把它排除在选择语句之外吗?
您不会从数据读取器中删除列。如果不需要数据,则不要读取该列。如果您需要列数据进行排序,请阅读它。编写 CSV 文件时,简单地省略数据。写入 CSV 文件与使用 SqlDataReader 读取无关。
添加一个参数,包括要忽略的列列表。
我有时有像ignore_columns
,include_columns
等参数。如果ignore_columns
提供了一个参数并且列表中有一个列,它将被忽略。如果include_columns
提供了参数并且列不在列表中,则将其忽略。
你不能!您将需要修改生成 CSV 的代码以仅处理所需的列并忽略其他列。