2

我有一个小的 C# 函数,它接受任何通用 SQLDataReader 并将其转换为 csv 文件。但是,我现在需要忽略传递给它的数据读取器中的 1 列。

如何从 SQLDataReader 中删除 1 列?

查询中需要此列,主要用于排序,但在同一页面加载的另一个区域中使用,但我不希望它显示在我将生成的 csv 文件中。

编辑:我认为我有点误导,我希望删除的列在其他情况下使用,而不是这个,所以只需从查询中删除即可,但会导致我必须运行两次查询,而不是只有一次,它是一个更大的查询。

4

5 回答 5

3

传递要隐藏的整数数组。整数对应于您要关闭的列的索引。您可以创建一个重载方法,这样您就不必更改程序中调用它并打印每一列的代码。

(我在这里假设很多,但重载是关键)

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
}
于 2009-05-13T14:39:12.083 回答
0

您不需要在结果集中包含在 SQL 查询的 order by 子句中使用的列。你能把它排除在选择语句之外吗?

于 2009-05-13T14:23:35.260 回答
0

您不会从数据读取器中删除列。如果不需要数据,则不要读取该列。如果您需要列数据进行排序,请阅读它。编写 CSV 文件时,简单地省略数据。写入 CSV 文件与使用 SqlDataReader 读取无关。

于 2009-05-13T14:24:12.873 回答
0

添加一个参数,包括要忽略的列列表。

我有时有像ignore_columns,include_columns等参数。如果ignore_columns提供了一个参数并且列表中有一个列,它将被忽略。如果include_columns提供了参数并且列不在列表中,则将其忽略。

于 2009-05-13T14:32:08.333 回答
0

你不能!您将需要修改生成 CSV 的代码以仅处理所需的列并忽略其他列。

于 2009-05-13T14:32:11.877 回答